SF.net SVN: geany:[3834] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Jun 1 21:51:33 UTC 2009


Revision: 3834
          http://geany.svn.sourceforge.net/geany/?rev=3834&view=rev
Author:   eht16
Date:     2009-06-01 21:51:33 +0000 (Mon, 01 Jun 2009)

Log Message:
-----------
Fix crashes when parsing the output of a compiler which reports errors on line 0.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/build.c
    trunk/src/editor.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-06-01 21:41:35 UTC (rev 3833)
+++ trunk/ChangeLog	2009-06-01 21:51:33 UTC (rev 3834)
@@ -1,3 +1,10 @@
+2009-06-01  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/build.c, src/editor.c:
+   Fix crashes when parsing the output of a compiler which reports
+   errors on line 0.
+
+
 2009-06-01  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * src/highlighting.c:

Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c	2009-06-01 21:41:35 UTC (rev 3833)
+++ trunk/src/build.c	2009-06-01 21:51:33 UTC (rev 3834)
@@ -824,7 +824,11 @@
 			GeanyDocument *doc = document_find_by_filename(filename);
 
 			if (doc)
-				editor_indicator_set_on_line(doc->editor, GEANY_INDICATOR_ERROR, line - 1);
+			{
+				if (line > 0) /* some compilers, like pdflatex report errors on line 0 */
+					line--;   /* so only adjust the line number if it is greater than 0 */
+				editor_indicator_set_on_line(doc->editor, GEANY_INDICATOR_ERROR, line);
+			}
 			color = COLOR_RED;	/* error message parsed on the line */
 		}
 		g_free(filename);

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2009-06-01 21:41:35 UTC (rev 3833)
+++ trunk/src/editor.c	2009-06-01 21:51:33 UTC (rev 3834)
@@ -3769,20 +3769,25 @@
 	gchar *linebuf;
 
 	g_return_if_fail(editor != NULL);
+	g_return_if_fail(line >= 0);
 
 	start = sci_get_position_from_line(editor->sci, line);
 	end = sci_get_position_from_line(editor->sci, line + 1);
 
 	/* skip blank lines */
 	if ((start + 1) == end ||
+		start > end ||
 		sci_get_line_length(editor->sci, line) == editor_get_eol_char_len(editor))
+	{
 		return;
+	}
 
 	len = end - start;
 	linebuf = sci_get_line(editor->sci, line);
 
 	/* don't set the indicator on whitespace */
-	while (isspace(linebuf[i])) i++;
+	while (isspace(linebuf[i]))
+		i++;
 	while (len > 1 && len > i && isspace(linebuf[len-1]))
 	{
 		len--;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list