Hi Emma,

Its hard to tell without more code, but I think you want an /*@exposed@*/
annotation on int *Buf like this:

typedef struct _TestT
{
  /*@exposed@*/ int *Buf;
  ...
}

This indicates that the storage Buf points to may be referenced
by pointers outside the struct.

If that doesn't give you what you want, send a more complete code fragment
(enough so we can run it and see the same warning you are getting).

--- Dave

On Mon, 8 Apr 2002, Emma Wermstrom wrote:

> Hi splint users!
>
> I have recently started using splint and have encountered the following code
> warning:
>
> Only storage Test[].Buf assigned to unqualified:
>                       *Buffer = Test[CurrentTest].Buf
>   The only reference to this storage is transferred to another reference (e.g.,
>   by returning it) that does not have the only annotation. This may lead to a
>   memory leak, since the new reference is not necessarily released. (Use
>   -onlytrans to inhibit warning)
>
> Buffer is a return value of a function (void function(/*@out@*/int *Buffer))
> The assignment of *Buffer (see above)is made just before the return
> statement of the function.
>
> Test is a data variable of a struct-type containing Buf, used within the
> module (.c).
> It is defined as:
>
> static Test_T    Test[4];
>
> where Test_Buf is of the same type as *Buffer, i.e. int.
>
> typedef struct _Test_T
> {
>    int        *Buf;
>    int        A;
>    boolean    B;
> } Test_T;
>
> When Test[4] is initialized, the following code warning appears:
>
> Implicitly only storage Test[].Buf (type int*) not
>     released before assignment: Test[i].Buf = MemoryAddress_C;
>   A memory leak has been detected. Only-qualified storage is not released
>   before the last reference to it is lost. (Use -mustfreeonly to inhibit
>   warning)
>
> Test[].Buf will never be modified.
>
> Could someone please explain to me on how to solve this problem. Thanks!
>
> Emma
> ---------------------------------------------------------------
> Emma Wermström
> Software Engineer
> Saab Ericsson Space AB          tel: 031-7354433
> S-405 15  Goteborg              mobil: 0708-375230
> SWEDEN                          mail: [EMAIL PROTECTED]
> --------------------------------------------------------------
>
>
>

Reply via email to