[geany/geany-plugins] c4de25: lineoperations: unnecessary heap allocations

Sylvan Mostert git-noreply at xxxxx
Tue Jul 2 07:30:36 UTC 2019


Branch:      refs/heads/master
Author:      Sylvan Mostert <smostert.dev at gmail.com>
Committer:   Sylvan Mostert <smostert.dev at gmail.com>
Date:        Wed, 08 Mar 2017 03:34:06 UTC
Commit:      c4de25225a192aed99b247dd39fa43cdac68147b
             https://github.com/geany/geany-plugins/commit/c4de25225a192aed99b247dd39fa43cdac68147b

Log Message:
-----------
lineoperations: unnecessary heap allocations


Modified Paths:
--------------
    lineoperations/src/lineoperations.c

Modified: lineoperations/src/lineoperations.c
40 lines changed, 13 insertions(+), 27 deletions(-)
===================================================================
@@ -156,42 +156,37 @@ action_indir_manip_item(GtkMenuItem *menuitem, gpointer gdata)
 	/* function pointer to function to be used */
 	gint (*func)(gchar **lines, gint num_lines, gchar *new_file) = gdata;
 	GeanyDocument *doc    = document_get_current();
-
 	g_return_if_fail(doc != NULL);
 
+	struct lo_lines sel;
 	gint   num_chars      = 0;
 	gint   i              = 0;
 	gint   lines_affected = 0;
 
-	struct lo_lines *sel = g_malloc(sizeof(struct lo_lines));
-	sel->is_selection    = FALSE;
-	sel->start_line      = 0;
-	sel->end_line        = 0;
-
-	get_current_sel_lines(doc->editor->sci, sel);
-	gint num_lines       = (sel->end_line - sel->start_line) + 1;
+	get_current_sel_lines(doc->editor->sci, &sel);
+	gint num_lines       = (sel.end_line - sel.start_line) + 1;
 
 
 	/* if last line within selection ensure that the file ends with newline */
-	if((sel->end_line + 1) == sci_get_line_count(doc->editor->sci))
-		ensure_final_newline(doc->editor, &num_lines, sel);
+	if((sel.end_line + 1) == sci_get_line_count(doc->editor->sci))
+		ensure_final_newline(doc->editor, &num_lines, &sel);
 
 	/* get num_chars and **lines */
 	gchar **lines        = g_malloc(sizeof(gchar *) * num_lines);
 	for(i = 0; i < num_lines; i++)
 	{
 		num_chars += (sci_get_line_length(doc->editor->sci,
-										(i + sel->start_line)));
+										(i + sel.start_line)));
 
 		lines[i]   = sci_get_line(doc->editor->sci,
-										(i + sel->start_line));
+										(i + sel.start_line));
 	}
 
 	gchar *new_file  = g_malloc(sizeof(gchar) * (num_chars + 1));
 	new_file[0]      = '\0';
 
 	/* select lines that will be replaced with array */
-	select_lines(doc->editor, sel);
+	select_lines(doc->editor, &sel);
 
 	sci_start_undo_action(doc->editor->sci);
 
@@ -202,9 +197,7 @@ action_indir_manip_item(GtkMenuItem *menuitem, gpointer gdata)
 	sci_replace_sel(doc->editor->sci, new_file);
 
 	/* select affected lines and set statusbar message */
-	user_indicate(doc->editor, lines_affected, sel);
-
-	g_free(sel);
+	user_indicate(doc->editor, lines_affected, &sel);
 
 	sci_end_undo_action(doc->editor->sci);
 
@@ -227,26 +220,19 @@ action_sci_manip_item(GtkMenuItem *menuitem, gpointer gdata)
 	/* function pointer to gdata -- function to be used */
 	gint (*func)(ScintillaObject *, gint, gint) = gdata;
 	GeanyDocument *doc  = document_get_current();
-
 	g_return_if_fail(doc != NULL);
 
-	struct lo_lines *sel = g_malloc(sizeof(struct lo_lines));
-	sel->is_selection    = FALSE;
-	sel->start_line      = 0;
-	sel->end_line        = 0;
-
-	get_current_sel_lines(doc->editor->sci, sel);
+	struct lo_lines sel;
+	get_current_sel_lines(doc->editor->sci, &sel);
 	gint lines_affected = 0;
 
 	sci_start_undo_action(doc->editor->sci);
 
-	lines_affected = func(doc->editor->sci, sel->start_line, sel->end_line);
+	lines_affected = func(doc->editor->sci, sel.start_line, sel.end_line);
 
 
 	/* put message in ui_statusbar, and highlight lines that were affected */
-	user_indicate(doc->editor, lines_affected, sel);
-
-	g_free(sel);
+	user_indicate(doc->editor, lines_affected, &sel);
 
 	sci_end_undo_action(doc->editor->sci);
 }



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list