Microsoft KB Archive/158885

= BUG: ESQL-C: Divisor in Parentheses May Cause AV in NSQLPREP =

PSS ID Number: 158885

Article Last Modified on 12/2/2002

-

The information in this article applies to:


 * Microsoft Embedded SQL for C Programmer's Toolkit

-



This article was previously published under Q158885



BUG #: 16003 (NT 6.50)



SYMPTOMS
NSQLPREP may experience an unhandled access violation (AV) when precompiling a C division expression in which the divisor is contained within parentheses. Additionally, the C modulus (%) operator causes the same problem.



WORKAROUND
To work around this problem, do either of the following:


 * Ensure that there is a character string variable assignment in the program, before the division expression.
 * Do not place the divisor in parentheses.



STATUS
Microsoft has confirmed this to be a problem in Microsoft Embedded SQL for C Programmer's Toolkit version 6.5. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.



MORE INFORMATION
Other operators (such as +, -, and *) do not cause an AV in NSQLPREP.

The following is a sample code fragment that will cause the ESQL-C precompiler to generate an AV:

int main (int argc, char** argv, char** envp) {     int x;      EXEC SQL BEGIN DECLARE SECTION; char o[3]; EXEC SQL END DECLARE SECTION; x = 1 / (1);  // causes AV      return (0); } /* end program */

The following sample code fragment will not cause the precompiler to generate an AV, because there is a character string variable assignment before the division expression:

int main (int argc, char** argv, char** envp) {     int x;      char string[] = "";  /* character string assignment */ EXEC SQL BEGIN DECLARE SECTION; char o[3]; EXEC SQL END DECLARE SECTION; x = 1 / (1); return (0); } /* end program */

Additional query words: ESQL/C ESQL-C

Keywords: kbBug kbProgramming KB158885

Technology: kbAudDeveloper kbSQLEmCPTKSearch kbSQLServSearch

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.