Shlomi Fish
Tue, 23 Jul 2002 07:04:52 -0700
I have the following structure definition:
<<<
struct freecell_solver_append_string_struct
{
/*@null@*/ /*@reldef@*/ /*@owned@*/ char * buffer;
/*@reldef@*/ /*@dependent@*/ char * end_of_buffer;
size_t max_size;
int size_of_margin;
};
typedef struct freecell_solver_append_string_struct
freecell_solver_append_string_t;
>>>
And the following function:
<<<
int freecell_solver_append_string_sprintf(
freecell_solver_append_string_t * app_str,
char * format,
...
)
{
int num_chars_written;
va_list my_va_list;
va_start(my_va_list, format);
num_chars_written = vsprintf(app_str->end_of_buffer, format,
my_va_list);
app_str->end_of_buffer += num_chars_written;
/*
* Check to see if we don't have enough space in which case we should
* resize
* */
if (app_str->buffer + app_str->max_size - app_str->end_of_buffer <
app_str->size_of_margin)
{
int offset = app_str->end_of_buffer - app_str->buffer;
app_str->max_size += GROW_BY;
app_str->buffer = realloc(app_str->buffer, app_str->max_size);
/*L58*/
if (app_str->buffer == NULL)
{
return -1;
}
/*
* Adjust end_of_buffer to the new buffer start
* */
app_str->end_of_buffer = app_str->buffer + offset;
} /* Line 67 */
return num_chars_written;
}
>>>
Now I get the following warning which I can't get rid of:
<<<
app_str.c:67:5: Clauses exit with app_str->buffer referencing only storage
in
true branch, owned storage in continuation
The state of a variable is different depending on which branch is taken.
This
means no annotation can sensibly be applied to the storage. (Use
-branchstate
to inhibit warning)
app_str.c:58:70: Storage app_str->buffer becomes only
>>>
How do I get rid of it?
Regards,
Shlomi Fish
----------------------------------------------------------------------
Shlomi Fish [EMAIL PROTECTED]
Home Page: http://t2.technion.ac.il/~shlomif/
Home E-mail: [EMAIL PROTECTED]
He who re-invents the wheel, understands much better how a wheel works.