magic/utils
Darryl L. Miles ef419258ab SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY
This supports three build modes:

No additional -D options, default legacy mode

-DSUPPORT_DIRECT_MALLOC, magic will use direct calls to libc malloc/free
 and will leave in place the symbols now renamed as mallocMagicLegacy()
 freeMagicLegacy() and callocMagicLegacy().

-DSUPPORT_DIRECT_MALLOC -DSUPPORT_REMOVE_MALLOC_LEGACY as above but will
 remove the three legacy functions from the binary to provide assurance
 they can not be used.

The system malloc is thread-safe the legacy magic malloc has a global
deferred free pointer and the mmap() allocate has a free-list that is
not thread-safe making use of free not thread-safe.
This could of course be improved with the use of
atomic_compare_and_exchange operations but for what gain ?

Then there is the additional function call overhead (of the indirection)
and a few tests/branches inserted into a commonly used code paths around
memory allocation, it hides the call site of the malloc/free usage from
the compiler which maybe have special optimization cases.

The existing malloc/free makes static code analysis around memory
allocation more problematic, also use of runtime analysers will operate
better with a fail-fast to bad memory usage.
2025-12-19 09:31:58 -05:00
..
LIBdbio.c Added the ability to read compressed .mag files (writing is not yet 2022-11-02 17:12:46 -04:00
LIBmain.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
LIBtextio.c LIBtextio.c: printf style constify fmt call-site 2025-01-03 09:08:14 +00:00
Makefile Moved new work on magic-8.4 (experimental merging of micromagic bplane structure 2019-03-22 19:58:47 -04:00
args.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
child.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
displays.proto Initial commit at Tue Apr 25 08:41:48 EDT 2017 by tim on stravinsky 2017-04-25 08:41:48 -04:00
dqueue.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
dqueue.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
finddisp.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
flock.c CodeQL FileMayNotBeClosed.ql flock.c may also leak 'fd' in error paths 2025-08-04 16:31:07 -04:00
flsbuf.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
fraction.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
geofast.h header file #ifndef guard presence consistency 2025-07-29 10:50:32 -04:00
geometry.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
geometry.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
getrect.c 35 x warning: suggest parentheses around assignment used as truth value 2024-10-09 21:12:55 -04:00
hash.c Revised some code from PR#352 in response to questions from Darryl 2024-12-26 15:29:54 -05:00
hash.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
heap.c hash.c: K&R conversion to ANSI and constify arguments / callback 2025-01-06 16:15:58 +00:00
heap.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
ihash.c ihash.c: cleanup warning use of void* with pointer arithmetic 2025-01-06 16:21:22 +00:00
ihash.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
list.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
list.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
lookup.c util/lookup*.c: fix integer pointer arithmetic not using pointertype 2024-12-26 15:20:58 -05:00
lookupany.c utils/lookup*.c: constify the API 2024-12-26 15:20:58 -05:00
lookupfull.c util/lookup*.c: fix integer pointer arithmetic not using pointertype 2024-12-26 15:20:58 -05:00
macros.c Substantially revised the "macro" command callback functions and 2025-10-09 15:43:54 -04:00
macros.h Substantially revised the "macro" command callback functions and 2025-10-09 15:43:54 -04:00
magic.h SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-12-19 09:31:58 -05:00
magic_alloca.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
magic_assert.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
magic_stdbool.h C23: use AC_HEADER_STDBOOL #include <stdbool.h> 2025-07-26 17:44:45 -04:00
magic_zlib.h CodeQL FileMayNotBeClosed.ql flock.c may also leak 'fd' in error paths 2025-08-04 16:31:07 -04:00
magsgtty.h autoconf: utilize HAVE_SYS_IOCTL_COMPAT_H HAVE_TERMIO_H 2025-07-29 10:50:32 -04:00
main.c fix: add missing #include <unistd.h> 2025-07-28 21:28:24 -04:00
main.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
malloc.c SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-12-19 09:31:58 -05:00
malloc.h SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-12-19 09:31:58 -05:00
match.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
maxrect.c Plane[GS]etHint() added to encapsulate access to Plane->pl_hint 2025-04-09 15:02:59 -04:00
maxrect.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
netlist.c netlist.c: whitespace only cleanup 2025-07-27 12:44:42 -04:00
netlist.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
niceabort.c niceabort.c: include <time.h> remove preC89 declarations 2025-07-29 10:50:32 -04:00
parser.c parser.c: ParsSplit() constify (const char **remainder) 2025-10-04 20:50:31 -04:00
parsetest.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
path.c CodeQL FileMayNotBeClosed.ql flock.c may also leak 'fd' in error paths 2025-08-04 16:31:07 -04:00
paths.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
pathvisit.c 35 x warning: suggest parentheses around assignment used as truth value 2024-10-09 21:12:55 -04:00
pathvisit.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
port.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
printstuff.c Initial commit at Tue Apr 25 08:41:48 EDT 2017 by tim on stravinsky 2017-04-25 08:41:48 -04:00
runstats.c Use HAVE_SYS_TIME_H and TIME_WITH_SYS_TIME from autoconf where possible 2025-07-27 12:43:04 -04:00
runstats.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
set.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
show.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
signals.c Use HAVE_SYS_TIME_H and TIME_WITH_SYS_TIME from autoconf where possible 2025-07-27 12:43:04 -04:00
signals.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
stack.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
stack.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
strdup.c utils/strdup.c: StrDup() and mode constifiy impl 2024-12-26 15:10:35 -05:00
styles.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
tech.c A number of changes: 2025-10-01 15:17:49 -04:00
tech.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
touchingtypes.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
touchtypes.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
undo.c utils/undo.c: Wrong type of arguments to formatting function 2024-10-01 12:36:12 -04:00
undo.h header file #ifndef guard namespace consistency (global change) 2025-07-29 10:50:32 -04:00
utils.h parser.c: ParsSplit() constify (const char **remainder) 2025-10-04 20:50:31 -04:00