home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lclint.zip / lclint-2_3h-os2-bin.zip / test / specclauses3.c < prev    next >
C/C++ Source or Header  |  1997-09-03  |  1KB  |  62 lines

  1. typedef struct 
  2. {
  3.   int id;
  4.   char *name;
  5. } *record;
  6.  
  7. int *badResult (void)  
  8.   /* 1. Function result is used in defines clause of badResult but ...
  9.      2. Special clause accesses field of non-struct or union result */
  10.    /*@defines result->name@*/ 
  11. {
  12.   return NULL; /* 3. Null storage returned as non-null: NULL */
  13.  
  14. /*@special@*/ record createName (/*@only@*/ char *name)
  15.    /*@defines result->name@*/ 
  16. {
  17.   record res = (record) malloc (sizeof (*res));
  18.  
  19.   assert (res != NULL);
  20.   res->name = name;
  21.   return res;
  22. }
  23.  
  24. /*@special@*/ record createName2 (void)
  25.    /*@defines result->name@*/ 
  26. {
  27.   record res = (record) malloc (sizeof (*res));
  28.   return res; /* 4. Undefined storage res->name corresponds to storage listed ...
  29.          5. Possibly null storage res returned as non-null: res */
  30. }
  31.  
  32. /*@special@*/ record createName3 (void)
  33.    /*@defines result->id@*/ 
  34.    /*@allocates result->name@*/
  35. {
  36.   record res = (record) malloc (sizeof (*res));
  37.  
  38.   assert (res != NULL);
  39.  
  40.   res->name = (char *) malloc (sizeof (char) * 23);
  41.   res->id = 21;
  42.   return res;
  43. }
  44.  
  45. /*@special@*/ record createName4 (void)
  46.    /*@defines result->id@*/ 
  47.    /*@allocates result->name@*/
  48. {
  49.   record res = (record) malloc (sizeof (*res));
  50.  
  51.   assert (res != NULL);
  52.  
  53.   res->id = 21;
  54.   return res; /* 6. Unallocated storage res->name corresponds to storage ... */
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.