home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
splint3s.zip
/
splint-3.0.1.6
/
test
/
sharing4.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-06-12
|
2KB
|
48 lines
/*@only@*/ char *globonly1;
/*@only@*/ char *globonly2;
/*@only@*/ char *globonly3;
/*@only@*/ char *globonly4;
/*@only@*/ char *globonly5;
/*@shared@*/ char *globshared1;
/*@shared@*/ char *globshared2;
extern void free (/*@out@*/ /*@only@*/ void *s);
extern /*@only@*/ char *string_copy (char *s) /*@modifies nothing;@*/ ;
int f(/*@only@*/ char *only1, /*@only@*/ char *only2, /*@only@*/ char *only3,
char *temp1, /*@temp@*/ char *temp2,
/*@shared@*/ char *shared1, /*@shared@*/ char *shared2)
{
char *local1;
globonly1 = only1; /* 1. Only storage globonly1 not released before assignment */
free (globonly2);
globonly2 = only2;
free (globonly3); /* okay...for now */
globonly4 = shared1; /* 2. Only storage globonly4 not released before assignment
3. Shared storage assigned to only */
globshared1 = shared2;
globshared1 = globshared2;
globshared1 = globonly5; /* 4. Only storage assigned to shared */
local1 = globonly1;
globshared1 = local1; /* 5. Only storage globonly1 assigned to shared (local1 aliases */
/* 6. Kept storage only1 assigned to shared (local1 aliases */
globshared1 = string_copy (local1); /* 7. Only storage assigned to shared */
globshared2 = temp2; /* 8. Temp storage temp2 assigned to shared */
globonly4 = temp1; /* 9. Only storage globonly4 not released before assignment
10. Temp storage temp1 assigned to only: globonly4 = temp1 */
free (shared1); /* 11. Shared storage shared1 passed as only param */
*only3 = 'a';
*shared2 = 'c';
return 3; /* 12. Only storage only3 not released before return */
/* 13. Function returns with global globonly3 referencing released */
}