Nope, no clue, we're still segfaulting, and valgrind finds it, but I
don't know enough about internals to fix.
uniqua:~/parrot $ valgrind ./parrot t/compilers/imcc/syn/macro_32.pir
==1234== Memcheck, a memory error detector.
==1234== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==1234== Using LibVEX rev 1804, a library for dynamic binary
translation.
==1234== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==1234== Using valgrind-3.3.0, a dynamic binary instrumentation
framework.
==1234== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==1234== For more details, rerun with: -v
==1234==
==1234== Invalid read of size 1
==1234== at 0x4A06C82: strlen (mc_replace_strmem.c:242)
==1234== by 0x4F4F39D: read_macro (imcc.l:995)
==1234== by 0x4F4A7EB: yylex (imcc.l:424)
==1234== by 0x4F42521: yyparse (imcparser.c:2693)
==1234== by 0x4F520DC: compile_to_bytecode (main.c:954)
==1234== by 0x4F52480: imcc_run (main.c:1055)
==1234== by 0x400AE4: main (main.c:56)
==1234== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==1234==
==1234== Process terminating with default action of signal 11 (SIGSEGV)
==1234== Access not within mapped region at address 0x0
==1234== at 0x4A06C82: strlen (mc_replace_strmem.c:242)
==1234== by 0x4F4F39D: read_macro (imcc.l:995)
==1234== by 0x4F4A7EB: yylex (imcc.l:424)
==1234== by 0x4F42521: yyparse (imcparser.c:2693)
==1234== by 0x4F520DC: compile_to_bytecode (main.c:954)
==1234== by 0x4F52480: imcc_run (main.c:1055)
==1234== by 0x400AE4: main (main.c:56)
==1234==
==1234== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 5 from 1)
==1234== malloc/free: in use at exit: 4,084,828 bytes in 3,962 blocks.
==1234== malloc/free: 4,094 allocs, 132 frees, 4,142,163 bytes
allocated.
==1234== For counts of detected errors, rerun with: -v
==1234== searching for pointers to 3,962 not-freed blocks.
==1234== checked 4,852,040 bytes.
==1234==
==1234== LEAK SUMMARY:
==1234== definitely lost: 4 bytes in 2 blocks.
==1234== possibly lost: 0 bytes in 0 blocks.
==1234== still reachable: 4,084,824 bytes in 3,960 blocks.
==1234== suppressed: 0 bytes in 0 blocks.
==1234== Rerun with --leak-check=full to see details of leaked memory.
Segmentation fault
--
Andy Lester => [EMAIL PROTECTED] => www.petdance.com => AIM:petdance