gmio_stl: fix crash with gmio_stla_infos_get() when flag_size not set

This commit is contained in:
Hugues Delorme 2016-06-23 17:48:59 +02:00
parent 4d913a9c6a
commit b9c4678c46

View File

@ -49,14 +49,13 @@ static bool gmio_stringstream_icase_eat(
return *str == 0; return *str == 0;
} }
/* Callback invoked by gmio_stringstream */ /* Callback invoked by gmio_stringstream for handling also stream total size */
static size_t gmio_stringstream_read( static size_t gmio_stringstream_read__flagsize(
void* cookie, struct gmio_stream* stream, char* ptr, size_t len) void* cookie, struct gmio_stream* stream, char* ptr, size_t len)
{ {
gmio_streamsize_t* ptr_size = (gmio_streamsize_t*)(cookie); gmio_streamsize_t* ptr_size = (gmio_streamsize_t*)(cookie);
const size_t len_read = gmio_stream_read_bytes(stream, ptr, len); const size_t len_read = gmio_stream_read_bytes(stream, ptr, len);
if (ptr_size != NULL) *ptr_size += len_read;
*ptr_size += len_read;
return len_read; return len_read;
} }
@ -90,7 +89,10 @@ int gmio_stla_infos_get(
if (flag_size) { if (flag_size) {
infos->size = 0; infos->size = 0;
sstream.cookie = &infos->size; sstream.cookie = &infos->size;
sstream.func_stream_read = gmio_stringstream_read; sstream.func_stream_read = gmio_stringstream_read__flagsize;
}
else {
sstream.func_stream_read = gmio_stringstream_default_func_read;
} }
gmio_stringstream_init_pos(&sstream); gmio_stringstream_init_pos(&sstream);