Revision: 1096 http://svn.sourceforge.net/geany/?rev=1096&view=rev Author: ntrel Date: 2006-12-14 07:49:10 -0800 (Thu, 14 Dec 2006)
Log Message: ----------- Fix adding a multiline comment character after pressing enter on the last line of a multiline comment. Remove multiline comment indent after pressing enter on last line. Prevent invalid memory reads in auto_multiline().
Modified Paths: -------------- trunk/ChangeLog trunk/src/sci_cb.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-12-14 12:54:36 UTC (rev 1095) +++ trunk/ChangeLog 2006-12-14 15:49:10 UTC (rev 1096) @@ -3,6 +3,11 @@ * src/document.c: Fix updating the symbol list when a file is saved. Update C-like typedef keywords when reloading a file. + * src/sci_cb.c: + Fix adding a multiline comment character after pressing enter on the + last line of a multiline comment. + Remove multiline comment indent after pressing enter on last line. + Prevent invalid memory reads in auto_multiline().
2006-12-13 Frank Lanitz frank@frank.uvena.de
Modified: trunk/src/sci_cb.c =================================================================== --- trunk/src/sci_cb.c 2006-12-14 12:54:36 UTC (rev 1095) +++ trunk/src/sci_cb.c 2006-12-14 15:49:10 UTC (rev 1096) @@ -1741,17 +1741,23 @@ gchar *continuation = "*"; // the type of comment, '*' (C/C++/Java), '+' and the others (D) gchar *whitespace = ""; // to hold whitespace if needed gchar *result; + gint len = strlen(previous_line);
// find and stop at end of multi line comment - i = strlen(previous_line); - while (isspace(previous_line[i])) i--; - if (is_doc_comment_char(previous_line[i - 1], lexer) && previous_line[i] == '/') return; - + i = len - 1; + while (i >= 0 && isspace(previous_line[i])) i--; + if (i >= 1 && is_doc_comment_char(previous_line[i - 1], lexer) && previous_line[i] == '/') + { + SSM(sci, SCI_DELETEBACK, 0, 0); // remove whitespace indent + g_free(previous_line); + return; + } // check whether we are on the second line of multi line comment i = 0; - while (isspace(previous_line[i])) i++; // get to start of the line + while (i < len && isspace(previous_line[i])) i++; // get to start of the line
- if (previous_line[i] == '/' && is_doc_comment_char(previous_line[i + 1], lexer)) + if (i + 1 < len && + previous_line[i] == '/' && is_doc_comment_char(previous_line[i + 1], lexer)) { // we are on the second line of a multi line comment, so we have to insert white space whitespace = " "; }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.