[splint-discuss] How to check Uninitialized variable

Sebastian Waschik sebastian.waschik at gmx.de
Tue May 12 04:58:50 PDT 2009


Hello,

Vijayendra Suman <vijayendra.suman at gmail.com> writes:
> Hello All,
> Thanks for the prompt response,
> Here is the small piece of code this is compilable
>   1 #include <stdio.h>
>   2 void Call(int *a)
>   3 {
>   4         int StatusUpdate;
>   5         int MyOne()
>   6         {

Two problems:
1. You use sometimes use not a real blank (0x20) but a chracter that
looks like a blank (0xa0).

2. In C it is not allowed to definie functions inside other
   functions.  I did not even know gcc accepts this.


With cleanup a get the following messages.  Source code follows.

Greetings from Hamburg
Sebastian Waschik


Splint 3.1.1 --- 21 Apr 2006

test.c: (in function main)
test.c:26:8: Passed storage &call not completely defined: Call (&call)
  Storage derivable from a parameter, return value or global is not defined.
  Use /*@out@*/ to denote passed or returned storage which need not be defined.
  (Use -compdef to inhibit warning)
test.c:23:14: Parameter argc not used
  A function parameter is not used in the body of the function. If the argument
  is needed for type compatibility or future plans, use /*@unused@*/ in the
  argument declaration. (Use -paramuse to inhibit warning)
test.c:23:27: Parameter argv not used
test.c:2:5: Variable exported but not used outside test: StatusUpdate
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
test.c:3:5: Function exported but not used outside test: MyOne
   test.c:7:1: Definition of MyOne
test.c:8:5: Function exported but not used outside test: MyTwo
   test.c:12:1: Definition of MyTwo
test.c:14:6: Function exported but not used outside test: Call
   test.c:21:1: Definition of Call


#include <stdio.h>
int StatusUpdate;
int MyOne()
{
  printf("One \n");
  return 1;
}
int MyTwo()
{
  printf("Two \n");
  return 2;
}

void Call(int *a)
{
  if (a==NULL) return;
  if (*a == 1 )
    StatusUpdate = MyOne();
  else
    StatusUpdate = MyTwo();
}

int main(int argc, char * argv[])
{
 int call; /* call is not initialized */
  Call(&call);
   return 0;
}



More information about the splint-discuss mailing list