fix: make platform-specific headers and functions conditional for mac…#10
Open
manuschillerdev wants to merge 2 commits intoallyourcodebase:masterfrom
Open
fix: make platform-specific headers and functions conditional for mac…#10manuschillerdev wants to merge 2 commits intoallyourcodebase:masterfrom
manuschillerdev wants to merge 2 commits intoallyourcodebase:masterfrom
Conversation
andrewrk
pushed a commit
that referenced
this pull request
Apr 3, 2026
When running with -fsanitize=leak enabled nasm prints this error:
==19965==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 360 byte(s) in 90 object(s) allocated from:
#0 0x7faee9396867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x5645d39a401c in nasm_malloc nasmlib/alloc.c:55
#2 0x5645d3a41f9d in string_transform asm/strfunc.c:356
#3 0x5645d3a37d40 in eval_strfunc asm/eval.c:761
#4 0x5645d3a37d40 in expr6 asm/eval.c:906
#5 0x5645d3a3968d in expr5 asm/eval.c:627
#6 0x5645d3a39aca in expr4 asm/eval.c:602
#7 0x5645d3a39b72 in expr3 asm/eval.c:563
#8 0x5645d3a39db8 in expr2 asm/eval.c:537
#9 0x5645d3a39f38 in expr1 asm/eval.c:511
#10 0x5645d3a3a0b8 in expr0 asm/eval.c:485
netwide-assembler#11 0x5645d3a3a242 in rexp3 asm/eval.c:422
netwide-assembler#12 0x5645d3a3a508 in rexp2 asm/eval.c:396
netwide-assembler#13 0x5645d3a3a6a8 in rexp1 asm/eval.c:369
netwide-assembler#14 0x5645d3a3a838 in rexp0 asm/eval.c:342
netwide-assembler#15 0x5645d3a3a838 in cexpr asm/eval.c:305
netwide-assembler#16 0x5645d3a3ad08 in bexpr asm/eval.c:298
netwide-assembler#17 0x5645d3a3ad08 in evaluate asm/eval.c:1032
netwide-assembler#18 0x5645d39e4f20 in parse_line asm/parser.c:959
netwide-assembler#19 0x5645d399e243 in assemble_file asm/nasm.c:1735
netwide-assembler#20 0x5645d3998801 in main asm/nasm.c:719
netwide-assembler#21 0x7faee8aaed8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
netwide-assembler#22 0x7faee8aaee3f in __libc_start_main_impl ../csu/libc-start.c:392
netwide-assembler#23 0x5645d399acd4 in _start (/home/ivan/d/nasm/nasm+0x2e5cd4)
SUMMARY: AddressSanitizer: 360 byte(s) leaked in 90 allocation(s).
This problem is reproducible on test utf.asm.
The problem was caused by the fact that eval_strfunc doesn't free the string
allocated by string_transform.
Signed-off-by: Ivan Sorokin <vanyacpp@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
endian.h, mempcpy, vsnprintf, and strlcpy were unconditionally enabled in build.zig, but have different availability across platforms. endian.h and mempcpy are Linux-only (macOS uses machine/endian.h and doesn't have mempcpy), strlcpy is available on Darwin but wasn't declared, and vsnprintf is universally available but was left undefined. This caused compile errors when nasm was built as a host tool on macOS (e.g. when cross-compiling FFmpeg for x86_64).