Bob~ On 5/3/05, Bob Rogers <[EMAIL PROTECTED]> wrote: > . . . but I can't figure out why. I thought the patch below would > help, but it appears that the value of c is itself broken somehow. > > . . . > This GDB was configured as "i586-suse-linux"... > (gdb) r runtime/parrot/library/config.pbc > Starting program: /usr/src/parrot/disassemble > runtime/parrot/library/config.pbc > [New Thread 16384 (LWP 24464)] > [New Thread 32769 (LWP 24466)] > [New Thread 16386 (LWP 24467)] > [New Thread 32771 (LWP 24468)] > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 16384 (LWP 24464)] > 0x08083966 in Parrot_disassemble (interpreter=0x8253d00) at > src/embed.c:880 > (gdb) bt > #0 0x08083966 in Parrot_disassemble (interpreter=0x8253d00) at > src/embed.c:880 > #1 0x08082871 in do_dis (interpreter=0x8253d00) at src/disassemble.c:99 > #2 0x0808283f in main (argc=2, argv=0xbffff554) at src/disassemble.c:79 > (gdb) > > I find disassemble useful, but it seems subject to periodic bit rot. > So, I think I would like to write some basic tests for it. Is it worth > extending Parrot::Test to include disassemble_output_is, etc., or should > I do something more special-purpose? > > -- Bob Rogers > http://rgrjr.dyndns.org/ > > ------------------------------------------------------------------------ > Index: embed.c > =================================================================== > --- embed.c (revision 7955) > +++ embed.c (working copy) > @@ -877,7 +877,7 @@ > if (line->label) > PIO_printf(interpreter, "L%li:\t", line->label->number); > c = pdb->file->source + line->source_offset; > - while (*c != '\n' && c) > + while (*c && *c != '\n') > PIO_printf(interpreter, "%c", *(c++)); > PIO_printf(interpreter, "\n"); > line = line->next; >
Not knowing any of the surrounding code, shouldn't that be while (c && *c != '\n') Matt -- "Computer Science is merely the post-Turing Decline of Formal Systems Theory." -???