From: SL B. <st...@bs...> - 2002-04-19 05:07:41
|
When Sial encounters a construct of the form for (;;) {...} it does not treat it as an infinite loop, it dereferences a NULL pointer instead. Attached is a test case, a session demonstrating the bug, and a patch. Please review and apply the patch. fortest.sial: void fortest() { int i = 0; for (;;) { printf("Sial works correctly\n", i); if (++i > 0) break; } } string fortest_help() { return ""; } string fortest_opt() { return ""; } string fortest_usage() { return ""; } // fortest.sial ends here Before: >> load /tmp/fortest.sial >> fortest File /tmp/fortest.sial, line 9, Error: Exception caught! >> After: >> load /tmp/fortest.sial >> fortest Sial works correctly >> --- lkcdutils/libsial/sial_stat.c.forever Thu Dec 6 18:28:51 2001 +++ lkcdutils/libsial/sial_stat.c Tue Apr 16 10:38:08 2002 @@ -82,7 +82,7 @@ v1=sial_exeplist(P1); FV1; - while(sial_bool(V2)) { + while(!P2 || sial_bool(V2)) { FV2; |