[gtksourceview/wip/loader-saver] FileSaver: ensure the source_buffer != NULL
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/loader-saver] FileSaver: ensure the source_buffer != NULL
- Date: Fri, 28 Mar 2014 17:45:10 +0000 (UTC)
commit 9d51ef240ee241d01e09e733cb1a72ff576f36e7
Author: Sébastien Wilmet <swilmet gnome org>
Date: Fri Mar 28 18:32:13 2014 +0100
FileSaver: ensure the source_buffer != NULL
gtksourceview/gtksourcefilesaver.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/gtksourceview/gtksourcefilesaver.c b/gtksourceview/gtksourcefilesaver.c
index 6ecec17..05aa81c 100644
--- a/gtksourceview/gtksourcefilesaver.c
+++ b/gtksourceview/gtksourcefilesaver.c
@@ -741,10 +741,6 @@ replace_file_cb (GFile *file,
saver->priv->output_stream = G_OUTPUT_STREAM (output_stream);
}
- saver->priv->input_stream = _gtk_source_buffer_input_stream_new (GTK_TEXT_BUFFER
(saver->priv->source_buffer),
- saver->priv->newline_type,
-
saver->priv->ensure_trailing_newline);
-
buffer_stream = GTK_SOURCE_BUFFER_INPUT_STREAM (saver->priv->input_stream);
saver->priv->total_size = _gtk_source_buffer_input_stream_get_total_size (buffer_stream);
@@ -874,6 +870,9 @@ gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
{
g_return_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver));
g_return_if_fail (saver->priv->task == NULL);
+ g_return_if_fail (saver->priv->source_buffer != NULL);
+
+ reset (saver);
saver->priv->task = g_task_new (saver, cancellable, callback, user_data);
g_task_set_priority (saver->priv->task, io_priority);
@@ -885,6 +884,14 @@ gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
g_print ("Start saving\n");
});
+ /* The BufferInputStream has a strong reference to the source_buffer.
+ * We create the BufferInputStream here so we are sure that the
+ * source_buffer will not be destroyed during the file saving.
+ */
+ saver->priv->input_stream = _gtk_source_buffer_input_stream_new (GTK_TEXT_BUFFER
(saver->priv->source_buffer),
+ saver->priv->newline_type,
+
saver->priv->ensure_trailing_newline);
+
begin_write (saver);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]