summaryrefslogtreecommitdiff
path: root/gio/src/memoryinputstream.ccg
diff options
context:
space:
mode:
authorJonathon Jongsma <jonathon@quotidian.org>2009-07-26 23:05:53 -0500
committerJonathon Jongsma <jonathon@quotidian.org>2009-07-26 23:06:29 -0500
commit6e16f9368b2220ce50e9fa62f0f0e660727bf3e9 (patch)
tree37526f006810615dc7f80cf90f758f8d9c4ae5dc /gio/src/memoryinputstream.ccg
parentea7aab45922a6756ebd305499c1131d5fc1efb5b (diff)
downloadglibmm-6e16f9368b2220ce50e9fa62f0f0e660727bf3e9.tar.gz
Fix MemoryInputStream::addData (Bug #589683)
Diffstat (limited to 'gio/src/memoryinputstream.ccg')
-rw-r--r--gio/src/memoryinputstream.ccg18
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