diff options
author | Jonathon Jongsma <jonathon@quotidian.org> | 2009-07-26 23:05:53 -0500 |
---|---|---|
committer | Jonathon Jongsma <jonathon@quotidian.org> | 2009-07-26 23:06:29 -0500 |
commit | 6e16f9368b2220ce50e9fa62f0f0e660727bf3e9 (patch) | |
tree | 37526f006810615dc7f80cf90f758f8d9c4ae5dc /gio/src/memoryinputstream.ccg | |
parent | ea7aab45922a6756ebd305499c1131d5fc1efb5b (diff) | |
download | glibmm-6e16f9368b2220ce50e9fa62f0f0e660727bf3e9.tar.gz |
Fix MemoryInputStream::addData (Bug #589683)
Diffstat (limited to 'gio/src/memoryinputstream.ccg')
-rw-r--r-- | gio/src/memoryinputstream.ccg | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gio/src/memoryinputstream.ccg b/gio/src/memoryinputstream.ccg index 220ddb11..4c3c276e 100644 --- a/gio/src/memoryinputstream.ccg +++ b/gio/src/memoryinputstream.ccg @@ -24,13 +24,27 @@ namespace Gio void MemoryInputStream::add_data(const std::string& data) { - g_memory_input_stream_add_data(gobj(), data.c_str(), data.size(), NULL); + char *data_copy = g_strdup (data.c_str ()); + g_memory_input_stream_add_data(gobj(), data_copy, -1, g_free); } void MemoryInputStream::add_data(const void* data, gssize len) { - g_memory_input_stream_add_data(gobj(), data, len, NULL); + char *data_copy = 0; + + // copy the data so that the caller doesn't need to keep the data alive + if (len > 0) + data_copy = g_strdup (data); + else + data_copy = g_strndup (data, len); + + g_memory_input_stream_add_data(gobj(), data_copy, len, g_free); +} + +void MemoryInputStream::add_data(const void* data, gssize len, GDestroyNotify destroy) +{ + g_memory_input_stream_add_data(gobj(), data, len, destroy); } } // namespace Gio |