I attach the same patch formatted with git.
>From 1d21f97b4d3c1e184ea3b3cb9fba798d0aec7281 Mon Sep 17 00:00:00 2001
From: Dawid Toton <to...@vost.dhcp.ifj.edu.pl>
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

Reply via email to