SF.net SVN: geany: [1625] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Fri Jun 15 17:16:07 UTC 2007
Revision: 1625
http://svn.sourceforge.net/geany/?rev=1625&view=rev
Author: eht16
Date: 2007-06-15 10:16:06 -0700 (Fri, 15 Jun 2007)
Log Message:
-----------
Fix sanity checks in utils_str_replace().
Fix several memleaks.
Avoid using broken functions g_strdown() and g_strup().
Only create header and source files if filename is not empty.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/tools.c
trunk/src/utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-06-15 16:10:59 UTC (rev 1624)
+++ trunk/ChangeLog 2007-06-15 17:16:06 UTC (rev 1625)
@@ -1,6 +1,6 @@
2007-06-15 Frank Lanitz <frank at frank.uvena.de>
- * src/about.c: Update of About-dialog.
+ * src/about.c: Update of about dialog.
* THANKS: Added Spanish translator Nacho Cabanes.
@@ -12,6 +12,11 @@
was closed by a delete event.
Fix creation of class files with an empty name and some code
reformatting.
+ * src/utils.c: Fix sanity checks in utils_str_replace().
+ * src/tools.c:
+ Fix several memleaks.
+ Avoid using broken functions g_strdown() and g_strup().
+ Only create header and source files if filename is not empty.
2007-06-14 Frank Lanitz <frank at frank.uvena.de>
Modified: trunk/src/tools.c
===================================================================
--- trunk/src/tools.c 2007-06-15 16:10:59 UTC (rev 1624)
+++ trunk/src/tools.c 2007-06-15 17:16:06 UTC (rev 1625)
@@ -1175,37 +1175,41 @@
{
gchar *base_name_splitted;
gchar *base_header;
- gchar *base_gtype = NULL;
+ gchar *tmp;
g_return_if_fail(entry != NULL);
g_return_if_fail(GTK_IS_ENTRY(entry));
g_return_if_fail(cc_dlg != NULL);
base_name_splitted = str_case_split(gtk_entry_get_text(GTK_ENTRY(entry)), '_');
- base_header = g_strdup_printf("%s%s.h",
+ tmp = g_strdup_printf("%s%s.h",
g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3) ? "": "gtk/",
gtk_entry_get_text(GTK_ENTRY(entry)));
- g_strdown(base_header);
+ base_header = g_ascii_strdown(tmp, -1);
+ g_free(tmp);
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_header_entry), base_header);
if (cc_dlg->class_type == GEANY_CLASS_TYPE_GTK)
{
+ gchar *base_gtype;
if (! g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3))
{
- base_gtype = g_strdup_printf("%.3s_TYPE%s",
+ tmp = g_strdup_printf("%.3s_TYPE%s",
base_name_splitted,
base_name_splitted + 3);
}
else
- base_gtype = g_strconcat(base_name_splitted, "_TYPE", NULL);
- g_strup(base_gtype);
+ tmp = g_strconcat(base_name_splitted, "_TYPE", NULL);
+ base_gtype = g_ascii_strup(tmp, -1);
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_gtype_entry), base_gtype);
+
+ g_free(base_gtype);
+ g_free(tmp);
}
g_free(base_name_splitted);
g_free(base_header);
- g_free(base_gtype);
}
@@ -1214,6 +1218,7 @@
ClassInfo *class_info;
gint idx;
gchar *text;
+ gchar *tmp;
g_return_if_fail(cc_dlg != NULL);
@@ -1223,8 +1228,8 @@
class_info = g_new0(ClassInfo, 1);
class_info->type = cc_dlg->class_type;
class_info->class_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->class_name_entry)));
- class_info->class_name_up = str_case_split(class_info->class_name, '_');
- g_strup(class_info->class_name_up);
+ tmp = str_case_split(class_info->class_name, '_');
+ class_info->class_name_up = g_ascii_strup(tmp, -1);
class_info->class_name_low = g_ascii_strdown(class_info->class_name_up, -1);
if (*gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_name_entry)) != '\0')
{
@@ -1317,16 +1322,30 @@
}
}
- text = templates_get_template_class_source(class_info);
- idx = document_new_file(class_info->source, NULL);
- sci_set_text(doc_list[idx].sci, text);
- g_free(text);
+ // only create the files if the filename is not empty
+ if (*class_info->source != '\0')
+ {
+ text = templates_get_template_class_source(class_info);
+ idx = document_new_file(class_info->source, NULL);
+ sci_set_text(doc_list[idx].sci, text);
+ g_free(text);
+ }
- text = templates_get_template_class_header(class_info);
- idx = document_new_file(class_info->header, NULL);
- sci_set_text(doc_list[idx].sci, text);
- g_free(text);
+ if (*class_info->header != '\0')
+ {
+ text = templates_get_template_class_header(class_info);
+ idx = document_new_file(class_info->header, NULL);
+ sci_set_text(doc_list[idx].sci, text);
+ g_free(text);
+ }
gtk_object_destroy(GTK_OBJECT(cc_dlg->dialog));
+
+ utils_free_pointers(tmp, class_info->class_name, class_info->class_name_up,
+ class_info->base_name, class_info->class_name_low, class_info->base_include,
+ class_info->header, class_info->header_guard, class_info->source, class_info->base_decl,
+ class_info->constructor_decl, class_info->constructor_impl,
+ class_info->gtk_destructor_registration, class_info->destructor_decl,
+ class_info->destructor_impl, class_info->base_gtype, class_info, NULL);
}
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2007-06-15 16:10:59 UTC (rev 1624)
+++ trunk/src/utils.c 2007-06-15 17:16:06 UTC (rev 1625)
@@ -881,12 +881,20 @@
gchar *result;
GString *str;
- if (haystack == NULL) return NULL;
+ if (haystack == NULL)
+ return NULL;
+ if (needle == NULL || replacement == NULL)
+ return haystack;
+
+ if (utils_str_equal(needle, replacement))
+ return haystack;
+
start = strstr(haystack, needle);
lt_pos = utils_strpos(haystack, needle);
- if (start == NULL || lt_pos == -1) return haystack;
+ if (start == NULL || lt_pos == -1)
+ return haystack;
// substitute by copying
str = g_string_sized_new(strlen(haystack));
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