richw@ncrcae.UUCP (Richard Wescott) (04/15/86)
We have found what appears to be an bug in awk when it tries to execute the following command: awk '{(for(;;)}' it reports syntax errors as it should but it also gets a segmentation violation on our NCR TOWER machines. Any help from the net would be greatly appreciated. We have found and solved another bug in awk where we were getting a segmentation violation and core dump from awk if awk was given an empty file to read. awk '{print $2}' /dev/null The core dump would only occur if awk was executed from a shell script (/bin/sh) which had many variables assigned. The function "program" in module run.c had a register variable which could go uninitialized if the file was empty. Since the register was unchanged from the execution shell which exec'ed awk the value of the register will sometimes be within the address space for awk and other times it will not. The fix of course was to initialize the register to NULL and check before using it. The following is a diff of the old and new versions of run.c: 5c5 < #define tempfree(a) {if(istemp(a)) {xfree(a->sval) ;a->tval = 0;}} --- > #define tempfree(a) {if( a && (istemp(a))) {xfree(a->sval) ;a->tval = 0;}} 80a81 > x = NULL; Rich Wescott NCR E&M Columbia.