Date: Tue, 13 Apr 2010 10:24:00 +0100 From: Rui Paulo <rpaulo@gmail.com> To: Hizel Ildar <hizel@vyborg.ru> Cc: freebsd-current@freebsd.org Subject: Re: SIGSEGV in dc, at bcode.c:277 (function reset_bmachine()) Message-ID: <9A01E942-1C57-4E93-8B86-274407DEF778@gmail.com> In-Reply-To: <20100413114803.784e2ab7@hzwork.vyborg.ru> References: <20100411001454.GO73901@bunrab.catwhisker.org> <20100413095350.3e74bb85@hzwork.vyborg.ru> <20100413114803.784e2ab7@hzwork.vyborg.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
On 13 Apr 2010, at 08:48, Hizel Ildar wrote: > My patch: >=20 > foo# diff -ruN dc.c.orig dc.c > --- dc.c.orig 2010-04-13 10:33:22.000000000 +0400 > +++ dc.c 2010-04-13 11:44:18.000000000 +0400 > @@ -87,12 +87,16 @@ > while ((ch =3D getopt_long(argc, argv, "e:f:Vx", long_options, = NULL)) !=3D -1) { > switch (ch) { > case 'e': > + if(!preproc_done) > + init_bmachine(extended_regs); > src_setstring(&src, optarg); > reset_bmachine(&src); > eval(); > preproc_done =3D true; > break; > case 'f': > + if(!preproc_done) > + init_bmachine(extended_regs); > procfile(optarg); > preproc_done =3D true; > break; > @@ -114,7 +118,9 @@ > argc -=3D optind; > argv +=3D optind; >=20 > - init_bmachine(extended_regs); > + if (!preproc_done) > + init_bmachine(extended_regs); > + > setlinebuf(stdout); > setlinebuf(stderr); >=20 >=20 > test: >=20 > foo# dc -f /tmp/test > 3 > foo# dc -e "6 2/p" > 3 > foo# dc -e "6 2/p" -f /tmp/test > 3 > 3 > foo# dc -e "6 2/p" -f /tmp/test /tmp/test > 3 > 3 > 3 This looks sane to me. Regards, -- Rui Paulo
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9A01E942-1C57-4E93-8B86-274407DEF778>