how@IRIS.UCDAVIS.EDU (W. Wilson Ho) (10/11/88)
Version, system, etc.: Gdb version 2.7 running under Ultrix 2.2 on a Vax 8600. Problem: Consider the following script: how@iris:62> gdb GDB 2.6, Copyright (C) 1988 Free Software Foundation, Inc. There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details. GDB is free software and you are welcome to distribute copies of it under certain conditions; type "info copying" to see the conditions. Type "help" for a list of commands. (gdb) printf "%f\n", 3+(4.0- Invalid syntax in expression. (gdb) printf "%f %f\n", 3.4, 5.6 Wrong number of arguments for specified format-string (gdb) quit I've figured out the error happens when ALL of the following are true: 1) A "printf" command was called 2) That command line contains a C expression 3) There is an error in the C expression 4) The error is detected after parsing a left paren, but before parsing the corresponding right paren. After the above error has happened, subsequence calls to printf that involve a list of arguments will get the wrong number of arguments error. I also believe that I've found that bug. In expread.y, there is a static variable "paren_depth". Whenever a left paren is processed by yylex(), paren_depth is incremented by one. But it is not reset to zero when an error is detected. So, next time when parse_to_comma_and_eval() is called, it will not stop at the correct position of the comma because paren_depth is NOT zero at that time. Wilson HO ------------------------------------------------------------------------------- W. Wilson Ho | INTERNET: how@iris.ucdavis.edu Division of Computer Science | UUCP: {lll-crg, ucbvax}!ucdavis!iris!how EECS Department | University of California | Phone: (916)752-7109 Davis, CA 95616 | -------------------------------------------------------------------------------