SF.net SVN: geany: [1059] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Thu Dec 7 16:09:45 UTC 2006


Revision: 1059
          http://svn.sourceforge.net/geany/?rev=1059&view=rev
Author:   eht16
Date:     2006-12-07 08:09:45 -0800 (Thu, 07 Dec 2006)

Log Message:
-----------
Revert the last change to utils_str_equal() and use it again because g_str_equal() is not NULL-safe.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/about.c
    trunk/src/build.c
    trunk/src/callbacks.c
    trunk/src/document.c
    trunk/src/encodings.c
    trunk/src/gb.c
    trunk/src/keyfile.c
    trunk/src/prefs.c
    trunk/src/sci_cb.c
    trunk/src/search.c
    trunk/src/symbols.c
    trunk/src/ui_utils.c
    trunk/src/utils.c
    trunk/src/utils.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/ChangeLog	2006-12-07 16:09:45 UTC (rev 1059)
@@ -7,6 +7,11 @@
    scintilla/include/SciLexer.h, src/highlighting.c:
    Added new scintilla lexer for D. It needs testing and there is more
    work to do to get it working properly.
+ * src/about.c, src/build.c, src/callbacks.c, src/document.c,
+   src/encodings.c, src/gb.c, src/keyfile.c, src/prefs.c, src/sci_cb.c,
+   src/search.c, src/symbols.c, src/ui_utils.c, src/utils.c,
+   src/utils.h: Revert the last change to utils_str_equal() and use it
+                again because g_str_equal() is not NULL-safe.
 
 
 2006-12-06  Enrico Tröger  <enrico.troeger at uvena.de>

Modified: trunk/src/about.c
===================================================================
--- trunk/src/about.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/about.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -132,7 +132,7 @@
 	header_label = gtk_label_new(NULL);
 	gtk_label_set_use_markup(GTK_LABEL(header_label), TRUE);
 	// print the subversion revision if it is available
-	g_snprintf(buffer, sizeof(buffer), HEADER, (g_str_equal(REVISION, "-1")) ? "" : " (" REVISION ")");
+	g_snprintf(buffer, sizeof(buffer), HEADER, (utils_str_equal(REVISION, "-1")) ? "" : " (" REVISION ")");
 	gtk_label_set_markup(GTK_LABEL(header_label), buffer);
 	gtk_widget_show(header_label);
 	gtk_box_pack_start(GTK_BOX(header_hbox), header_label, FALSE,FALSE,0);

Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/build.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -1147,9 +1147,9 @@
 	GtkWidget *menuitem =
 		build_get_menu_items(filetypes[run_info.file_type_id])->item_exec;
 
-	if (stop && g_str_equal(
+	if (stop && utils_str_equal(
 		gtk_tool_button_get_stock_id(GTK_TOOL_BUTTON(app->run_button)), "gtk-stop")) return;
-	if (! stop && g_str_equal(
+	if (! stop && utils_str_equal(
 		gtk_tool_button_get_stock_id(GTK_TOOL_BUTTON(app->run_button)), "gtk-execute")) return;
 
 	// use the run button also as stop button

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/callbacks.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -1604,24 +1604,24 @@
 
 	if (idx < 0 || ! doc_list[idx].is_valid) return;
 
-	if (g_str_equal(_("dd.mm.yyyy"), (gchar*) user_data))
+	if (utils_str_equal(_("dd.mm.yyyy"), (gchar*) user_data))
 		format = "%d.%m.%Y";
-	else if (g_str_equal(_("mm.dd.yyyy"), (gchar*) user_data))
+	else if (utils_str_equal(_("mm.dd.yyyy"), (gchar*) user_data))
 		format = "%m.%d.%Y";
-	else if (g_str_equal(_("yyyy/mm/dd"), (gchar*) user_data))
+	else if (utils_str_equal(_("yyyy/mm/dd"), (gchar*) user_data))
 		format = "%Y/%m/%d";
-	else if (g_str_equal(_("dd.mm.yyyy hh:mm:ss"), (gchar*) user_data))
+	else if (utils_str_equal(_("dd.mm.yyyy hh:mm:ss"), (gchar*) user_data))
 		format = "%d.%m.%Y %H:%M:%S";
-	else if (g_str_equal(_("mm.dd.yyyy hh:mm:ss"), (gchar*) user_data))
+	else if (utils_str_equal(_("mm.dd.yyyy hh:mm:ss"), (gchar*) user_data))
 		format = "%m.%d.%Y %H:%M:%S";
-	else if (g_str_equal(_("yyyy/mm/dd hh:mm:ss"), (gchar*) user_data))
+	else if (utils_str_equal(_("yyyy/mm/dd hh:mm:ss"), (gchar*) user_data))
 		format = "%Y/%m/%d %H:%M:%S";
-	else if (g_str_equal(_("Use custom date format"), (gchar*) user_data))
+	else if (utils_str_equal(_("Use custom date format"), (gchar*) user_data))
 		format = app->custom_date_format;
 	else
 	{
 		// set default value
-		if (g_str_equal("", app->custom_date_format)) app->custom_date_format = g_strdup("%d.%m.%Y");
+		if (utils_str_equal("", app->custom_date_format)) app->custom_date_format = g_strdup("%d.%m.%Y");
 
 		dialogs_show_input(_("Custom date format"),
 			_("Enter here a custom date and time format. You can use any conversion specifiers which can be used with the ANSI C strftime function. See \"man strftime\" for more information."),
@@ -1655,7 +1655,7 @@
 	gint idx = document_get_cur_idx(), pos = -1;
 	gchar *text;
 
-	if (g_str_equal(user_data, "blank"))
+	if (utils_str_equal(user_data, "blank"))
 	{
 		text = g_strdup("#include \"\"\n");
 		pos = editor_info.click_pos + 10;
@@ -1690,7 +1690,7 @@
 		{
 			newstr = gtk_entry_get_text(
 					GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "includes_entry1")));
-			if (! g_str_equal(newstr, programs->compiler))
+			if (! utils_str_equal(newstr, programs->compiler))
 			{
 				if (programs->compiler) g_free(programs->compiler);
 				programs->compiler = g_strdup(newstr);
@@ -1701,7 +1701,7 @@
 		{
 			newstr = gtk_entry_get_text(
 					GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "includes_entry2")));
-			if (! g_str_equal(newstr, programs->linker))
+			if (! utils_str_equal(newstr, programs->linker))
 			{
 				if (programs->linker) g_free(programs->linker);
 				programs->linker = g_strdup(newstr);
@@ -1712,7 +1712,7 @@
 		{
 			newstr = gtk_entry_get_text(
 					GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "includes_entry3")));
-			if (! g_str_equal(newstr, programs->run_cmd))
+			if (! utils_str_equal(newstr, programs->run_cmd))
 			{
 				if (programs->run_cmd) g_free(programs->run_cmd);
 				programs->run_cmd = g_strdup(newstr);
@@ -1738,7 +1738,7 @@
 
 		newstr = gtk_entry_get_text(
 				GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "tex_entry1")));
-		if (! g_str_equal(newstr, programs->compiler))
+		if (! utils_str_equal(newstr, programs->compiler))
 		{
 			if (programs->compiler) g_free(programs->compiler);
 			programs->compiler = g_strdup(newstr);
@@ -1746,7 +1746,7 @@
 		}
 		newstr = gtk_entry_get_text(
 				GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "tex_entry2")));
-		if (! g_str_equal(newstr, programs->linker))
+		if (! utils_str_equal(newstr, programs->linker))
 		{
 			if (programs->linker) g_free(programs->linker);
 			programs->linker = g_strdup(newstr);
@@ -1754,7 +1754,7 @@
 		}
 		newstr = gtk_entry_get_text(
 				GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "tex_entry3")));
-		if (! g_str_equal(newstr, programs->run_cmd))
+		if (! utils_str_equal(newstr, programs->run_cmd))
 		{
 			if (programs->run_cmd) g_free(programs->run_cmd);
 			programs->run_cmd = g_strdup(newstr);
@@ -1762,7 +1762,7 @@
 		}
 		newstr = gtk_entry_get_text(
 				GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "tex_entry4")));
-		if (! g_str_equal(newstr, programs->run_cmd2))
+		if (! utils_str_equal(newstr, programs->run_cmd2))
 		{
 			if (programs->run_cmd2) g_free(programs->run_cmd2);
 			programs->run_cmd2 = g_strdup(newstr);
@@ -1845,7 +1845,7 @@
 	guint i = GPOINTER_TO_INT(user_data);
 
 	if (app->ignore_callback || ! DOC_IDX_VALID(idx) || encodings[i].charset == NULL ||
-		g_str_equal(encodings[i].charset, doc_list[idx].encoding)) return;
+		utils_str_equal(encodings[i].charset, doc_list[idx].encoding)) return;
 
 	if (doc_list[idx].readonly)
 	{

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/document.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -92,7 +92,7 @@
 		// ignore the case of filenames and paths under WIN32, causes errors if not
 		if (dl_fname && ! strcasecmp(dl_fname, filename)) return i;
 #else
-		if (dl_fname && g_str_equal(dl_fname, filename)) return i;
+		if (dl_fname && utils_str_equal(dl_fname, filename)) return i;
 #endif
 	}
 	return -1;
@@ -427,7 +427,7 @@
 handle_forced_encoding(gchar **data, gsize *size, const gchar *forced_enc, gchar **enc,
 	gboolean *bom)
 {
-	if (g_str_equal(forced_enc, "UTF-8"))
+	if (utils_str_equal(forced_enc, "UTF-8"))
 	{
 		if (! g_utf8_validate(*data, *size, NULL))
 		{
@@ -435,7 +435,7 @@
 		}
 		else
 		{
-			*bom = g_str_equal(utils_scan_unicode_bom(*data), "UTF-8");
+			*bom = utils_str_equal(utils_scan_unicode_bom(*data), "UTF-8");
 			*enc = g_strdup(forced_enc);
 		}
 	}
@@ -452,7 +452,7 @@
 			g_free(*data);
 			*data = (void*)converted_text;
 			*size = strlen(converted_text);
-			*bom = g_str_equal(utils_scan_unicode_bom(*data), "UTF-8");
+			*bom = utils_str_equal(utils_scan_unicode_bom(*data), "UTF-8");
 			*enc = g_strdup(forced_enc);
 		}
 	}
@@ -631,7 +631,7 @@
 	if (forced_enc != NULL)
 	{
 		// the encoding should be ignored(requested by user), so open the file "as it is"
-		if (g_str_equal(forced_enc, encodings[GEANY_ENCODING_NONE].charset))
+		if (utils_str_equal(forced_enc, encodings[GEANY_ENCODING_NONE].charset))
 		{
 			bom = FALSE;
 			enc = g_strdup(encodings[GEANY_ENCODING_NONE].charset);
@@ -830,8 +830,8 @@
 	}
 
 	// save in original encoding, skip when it is already UTF-8 or has the encoding "None"
-	if (doc_list[idx].encoding != NULL && ! g_str_equal(doc_list[idx].encoding, "UTF-8") &&
-		! g_str_equal(doc_list[idx].encoding, encodings[GEANY_ENCODING_NONE].charset))
+	if (doc_list[idx].encoding != NULL && ! utils_str_equal(doc_list[idx].encoding, "UTF-8") &&
+		! utils_str_equal(doc_list[idx].encoding, encodings[GEANY_ENCODING_NONE].charset))
 	{
 		GError *conv_error = NULL;
 		gchar* conv_file_contents = NULL;
@@ -1538,7 +1538,7 @@
 void document_set_encoding(gint idx, const gchar *new_encoding)
 {
 	if (! DOC_IDX_VALID(idx) || new_encoding == NULL ||
-		g_str_equal(new_encoding, doc_list[idx].encoding)) return;
+		utils_str_equal(new_encoding, doc_list[idx].encoding)) return;
 
 	g_free(doc_list[idx].encoding);
 	doc_list[idx].encoding = g_strdup(new_encoding);
@@ -1635,7 +1635,7 @@
 	doc_list[idx].changed =
 		(sci_is_modified(doc_list[idx].sci) ||
 		doc_list[idx].has_bom != doc_list[idx].saved_encoding.has_bom ||
-		! g_str_equal(doc_list[idx].encoding, doc_list[idx].saved_encoding.encoding));
+		! utils_str_equal(doc_list[idx].encoding, doc_list[idx].saved_encoding.encoding));
 	document_set_text_changed(idx);
 }
 

Modified: trunk/src/encodings.c
===================================================================
--- trunk/src/encodings.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/encodings.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -176,7 +176,7 @@
 	i = 0;
 	while (i < GEANY_ENCODINGS_MAX)
 	{
-		if (g_str_equal(charset, encodings[i].charset)) break;
+		if (utils_str_equal(charset, encodings[i].charset)) break;
 		i++;
 	}
 	if (i == GEANY_ENCODINGS_MAX) i = GEANY_ENCODING_UTF_8; // fallback to UTF-8

Modified: trunk/src/gb.c
===================================================================
--- trunk/src/gb.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/gb.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -1324,7 +1324,7 @@
 		{
 			text[4] = 'y';
 			text[5] = '\0';
-			if (g_str_equal(text, "geany")) gb_start_easteregg();
+			if (utils_str_equal(text, "geany")) gb_start_easteregg();
 			return TRUE;
 			break;
 		}

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/keyfile.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -383,7 +383,7 @@
 
 		vc = g_new0(VteConfig, 1);
 		vte_info.dir = utils_get_setting_string(config, "VTE", "last_dir", NULL);
-		if ((vte_info.dir == NULL || g_str_equal(vte_info.dir, "")) && pw != NULL)
+		if ((vte_info.dir == NULL || utils_str_equal(vte_info.dir, "")) && pw != NULL)
 			// last dir is not set, fallback to user's home directory
 			vte_info.dir = g_strdup(pw->pw_dir);
 		else if (vte_info.dir == NULL && pw == NULL)

Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/prefs.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -872,7 +872,7 @@
 
 		for (idx = 0; idx < GEANY_MAX_KEYS; idx++)
 		{
-			if (g_str_equal(dialog_key_name, keys[idx]->label)) break;
+			if (utils_str_equal(dialog_key_name, keys[idx]->label)) break;
 		}
 
 		gtk_accelerator_parse(gtk_label_get_text(GTK_LABEL(dialog_label)), &lkey, &lmods);

Modified: trunk/src/sci_cb.c
===================================================================
--- trunk/src/sci_cb.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/sci_cb.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -1090,15 +1090,15 @@
 		str_found = utils_find_open_xml_tag(sel, pos - min, FALSE);
 
 	// when found string is something like br, img or another short tag, quit
-	if (g_str_equal(str_found, "br")
-	 || g_str_equal(str_found, "img")
-	 || g_str_equal(str_found, "base")
-	 || g_str_equal(str_found, "basefont")	// < or not <
-	 || g_str_equal(str_found, "frame")
-	 || g_str_equal(str_found, "input")
-	 || g_str_equal(str_found, "link")
-	 || g_str_equal(str_found, "area")
-	 || g_str_equal(str_found, "meta"))
+	if (utils_str_equal(str_found, "br")
+	 || utils_str_equal(str_found, "img")
+	 || utils_str_equal(str_found, "base")
+	 || utils_str_equal(str_found, "basefont")	// < or not <
+	 || utils_str_equal(str_found, "frame")
+	 || utils_str_equal(str_found, "input")
+	 || utils_str_equal(str_found, "link")
+	 || utils_str_equal(str_found, "area")
+	 || utils_str_equal(str_found, "meta"))
 	{
 		return FALSE;
 	}
@@ -1115,7 +1115,7 @@
 		if (ch == '>')
 		{
 			SSM(sci, SCI_SETSEL, pos, pos);
-			if (g_str_equal(str_found, "table")) sci_cb_auto_table(sci, pos);
+			if (utils_str_equal(str_found, "table")) sci_cb_auto_table(sci, pos);
 		}
 		sci_end_undo_action(sci);
 		g_free(to_insert);
@@ -1710,19 +1710,17 @@
 		SSM(sci, SCI_BRACEBADLIGHT, -1, 0);
 	}
 }
-
-
 void sci_cb_auto_multiline(ScintillaObject *sci, gint pos)
 {
 	gint style = SSM(sci, SCI_GETSTYLEAT, pos - 2, 0);
 	gint lexer = SSM(sci, SCI_GETLEXER, 0, 0);
 	gint i = pos;
 
-	if ((lexer == SCLEX_CPP && style == SCE_C_COMMENT) ||
+	if ((lexer == SCLEX_CPP && (style == SCE_C_COMMENT || style == SCE_C_COMMENTDOC)) ||
 		(lexer == SCLEX_HTML && style == SCE_HPHP_COMMENT))
 	{
 		while (isspace(sci_get_char_at(sci, i))) i--;
-		if (sci_get_char_at(sci, i) == '/' && sci_get_char_at(sci, i - 1) == '*') return;
+		if (sci_get_char_at(sci, i - 1) == '*' && sci_get_char_at(sci, i) == '/') return;
 
 		if (strlen(indent) == 0)
 		{	// if strlen(indent) is 0, there is no indentation, but should

Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/search.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -632,7 +632,7 @@
 	}
 
 	// put the focus to the directory entry if it is empty
-	if (g_str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), ""))
+	if (utils_str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), ""))
 		gtk_widget_grab_focus(dir_combo);
 	else
 		gtk_widget_grab_focus(combo);
@@ -948,7 +948,7 @@
 		const gchar *utf8_dir =
 			gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(dir_combo))));
 
-		if (utf8_dir == NULL || g_str_equal(utf8_dir, ""))
+		if (utf8_dir == NULL || utils_str_equal(utf8_dir, ""))
 			msgwin_status_add(_("Invalid directory for find in files."));
 		else if (search_text && *search_text)
 		{

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/symbols.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -169,7 +169,7 @@
 		}
 
 		// do this comparison only once
-		if (g_str_equal(doc_list[idx].encoding, "UTF-8")) doc_is_utf8 = TRUE;
+		if (utils_str_equal(doc_list[idx].encoding, "UTF-8")) doc_is_utf8 = TRUE;
 
 		for (i = 0; i < (doc_list[idx].tm_file)->tags_array->len; ++i)
 		{
@@ -254,7 +254,7 @@
 
 	for (i = 0; i < tags->len; ++i)
 	{
-		if (g_str_equal(TM_TAG(tags->pdata[i])->name, tag_name))
+		if (utils_str_equal(TM_TAG(tags->pdata[i])->name, tag_name))
 			return TM_TAG(tags->pdata[i]);
 	}
 	return NULL;

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/ui_utils.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -912,7 +912,7 @@
 	gchar *menu_text = menu_item_get_text(GTK_MENU_ITEM(list_data));
 	gint result;
 
-	if (g_str_equal(menu_text, user_data))
+	if (utils_str_equal(menu_text, user_data))
 		result = 0;
 	else
 		result = 1;
@@ -1144,7 +1144,7 @@
 	if (gtk_tree_model_get_iter_first(model, &iter))
 	{
 		gtk_tree_model_get(model, &iter, 0, &combo_text, -1);
-		equal = g_str_equal(combo_text, text);
+		equal = utils_str_equal(combo_text, text);
 		g_free(combo_text);
 	}
 	if (equal) return;	// don't prepend duplicate

Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/utils.c	2006-12-07 16:09:45 UTC (rev 1059)
@@ -679,6 +679,23 @@
 }
 
 
+/* (taken from libexo from os-cillation)
+ * NULL-safe string comparison. Returns TRUE if both a and b are
+ * NULL or if a and b refer to valid strings which are equal.
+ */
+gboolean utils_str_equal(const gchar *a, const gchar *b)
+{
+	if (a == NULL && b == NULL) return TRUE;
+	else if (a == NULL || b == NULL) return FALSE;
+
+	while (*a == *b++)
+		if (*a++ == '\0')
+			return TRUE;
+
+	return FALSE;
+}
+
+
 /* removes the extension from filename and return the result in
  * a newly allocated string */
 gchar *utils_remove_ext_from_filename(const gchar *filename)

Modified: trunk/src/utils.h
===================================================================
--- trunk/src/utils.h	2006-12-07 15:47:00 UTC (rev 1058)
+++ trunk/src/utils.h	2006-12-07 16:09:45 UTC (rev 1059)
@@ -71,6 +71,12 @@
 
 gdouble utils_scale_round(gdouble val, gdouble factor);
 
+/* (taken from libexo from os-cillation)
+ * NULL-safe string comparison. Returns TRUE if both a and b are
+ * NULL or if a and b refer to valid strings which are equal.
+ */
+gboolean utils_str_equal(const gchar *a, const gchar *b);
+
 /* removes the extension from filename and return the result in
  * a newly allocated string */
 gchar *utils_remove_ext_from_filename(const gchar *filename);


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