I attach the same patch formatted with git.
>From 1d21f97b4d3c1e184ea3b3cb9fba798d0aec7281 Mon Sep 17 00:00:00 2001
From: Dawid Toton <[email protected]>
Date: Wed, 30 May 2012 22:24:58 +0200
Subject: [PATCH] Avoid crash in case column number given in cmdline is too
high - with already open files
---
gedit/gedit-commands-file.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/gedit/gedit-commands-file.c b/gedit/gedit-commands-file.c
index c9812c0..2d68532 100644
--- a/gedit/gedit-commands-file.c
+++ b/gedit/gedit-commands-file.c
@@ -159,21 +159,29 @@ load_file_list (GeditWindow *window,
if (line_pos > 0)
{
+ /* user side: 1-based idex; gedit internal: 0-based index */
+ guint zero_based_line_pos = line_pos - 1;
+
/* document counts lines starting from 0 */
if (column_pos > 0)
{
- GtkTextIter iter;
-
- gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (doc),
- &iter,
- line_pos - 1,
- column_pos - 1);
-
- gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc), &iter);
+ guint zero_based_column_pos = column_pos - 1;
+ guint line_count = gtk_text_buffer_get_line_count (GTK_TEXT_BUFFER (doc));
+
+ if (zero_based_line_pos < line_count)
+ {
+ /* In case line_pos is within the document, we can use gedit_document_goto_line_offset */
+ gedit_document_goto_line_offset (doc, zero_based_line_pos, zero_based_column_pos);
+ }
+ else
+ {
+ /* go to the buffer end */
+ gedit_document_goto_line (doc, zero_based_line_pos);
+ }
}
else
{
- gedit_document_goto_line (doc, line_pos - 1);
+ gedit_document_goto_line (doc, zero_based_line_pos);
}
gedit_view_scroll_to_cursor (gedit_tab_get_view (tab));
--
1.7.10