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

ID: Q158885


The information in this article applies to:
  • Microsoft Embedded SQL for C Programmer's Toolkit, version 6.5

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 : kbprg SSrvESQL_C SSrvProg kbbug6.50
Version : 6.5
Platform : WINDOWS
Issue type :


Last Reviewed: April 4, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.