magic/utils
Darryl L. Miles e70bdca78a 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-02-18 06:06:32 +00: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 Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
finddisp.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
flock.c PaCheckCompressed() removed API quirkiness 2024-12-26 15:20:58 -05: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 geofast.h: warning: this 'else' clause does not guard... 2024-10-09 21:12:55 -04:00
geometry.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
geometry.h geometry.h: constify global wellknown Geometry data values 2024-12-26 15:20:39 -05: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 util/hash.[ch]: const hash 'key' for API and internal type 2024-12-26 15:10:35 -05:00
heap.c hash.c: K&R conversion to ANSI and constify arguments / callback 2025-01-06 16:15:58 +00:00
heap.h hash.c: K&R conversion to ANSI and constify arguments / callback 2025-01-06 16:15:58 +00:00
ihash.c ihash.c: cleanup warning use of void* with pointer arithmetic 2025-01-06 16:21:22 +00:00
ihash.h This corrects the issue raised in pull request #75 that breaks the 2021-06-12 20:29:09 -04:00
list.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
list.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -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 TCL9: ClientData macro assignment and access usage 2025-01-04 11:08:01 -05:00
macros.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
magic.h SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-02-18 06:06:32 +00:00
magsgtty.h quick and dirty emscripten port 2023-07-12 00:31:37 +09:00
main.c TCL9: TxResetTerminal(bool force) added arguments 2025-01-04 11:08:01 -05:00
main.h utils/main.h: MainExit() add ATTR_NORETURN hint 2025-01-03 09:08:14 +00:00
malloc.c SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-02-18 06:06:32 +00:00
malloc.h SUPPORT_DIRECT_MALLOC and SUPPORT_REMOVE_MALLOC_LEGACY 2025-02-18 06:06:32 +00:00
match.c utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
maxrect.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
maxrect.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
netlist.c gcc11 -Wall -Wpedantic cleanup 2025-01-06 16:12:11 +00:00
netlist.h Updated the version to go along with the merge of pull request 2023-03-10 11:14:23 -05:00
niceabort.c 35 x warning: suggest parentheses around assignment used as truth value 2024-10-09 21:12:55 -04:00
parser.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
parsetest.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
path.c path.c: PaEnum() constify and add prototype 2024-12-26 15:20:58 -05:00
paths.h Use proper path for more(1) on OpenBSD / NetBSD and DragonFly 2022-08-05 22:44:29 -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 C99 code compat when configured with no TCL support 2022-10-29 06:07:46 +02: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 utils/*.c: K&R conversion to ANSI 2025-01-06 16:14:34 +00:00
runstats.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -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 TCL9: TxResetTerminal(bool force) added arguments 2025-01-04 11:08:01 -05:00
signals.h Compatibility with C99 standard 2022-10-29 06:07:46 +02:00
stack.c Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
stack.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
strdup.c utils/strdup.c: StrDup() and mode constifiy impl 2024-12-26 15:10:35 -05:00
styles.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
tech.c printf: vararg functions use 'const' for format string 2025-01-03 09:08:14 +00:00
tech.h printf: vararg functions use 'const' for format string 2025-01-03 09:08:14 +00:00
touchingtypes.h Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -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 Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
utils.h set.c: SetNoisyBool() constify and add prototype 2024-12-26 15:20:58 -05:00