summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@src.gnome.org>2000-02-03 01:42:51 +0000
committerTor Lillqvist <tml@src.gnome.org>2000-02-03 01:42:51 +0000
commita30c4b9e94943b2fa70e38be197529f84fbe6ad5 (patch)
treea540659be70ac66f588ffe7b94cc1b60e6e581e3
parente57b1afa2b4c91bcfecef26e4bff5280bd3563de (diff)
downloadgdk-pixbuf-a30c4b9e94943b2fa70e38be197529f84fbe6ad5.tar.gz
Argh, decided not to return a string that must be freed from
gtk_file_selection_get_filename after all, as that would cause memory leaks in all apps that use it unless they specifically checked fot the GTk+ version. gtk_file_selection_get_filename returns the filename in the C runtime encoding. It calls g_filename_from_utf8, but copies the returned string to a static buffer, which is returned. I think this is better than returning the result from g_filename_from_utf8 directly, which would mean all apps that use it would have to free the return value. Or should this function care about this issue at all? Maybe a new function with clearly defined semantics.
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.pre-2-08
-rw-r--r--ChangeLog.pre-2-108
-rw-r--r--ChangeLog.pre-2-28
-rw-r--r--ChangeLog.pre-2-48
-rw-r--r--ChangeLog.pre-2-68
-rw-r--r--ChangeLog.pre-2-88
-rw-r--r--gtk/gtkfilesel.c11
-rw-r--r--gtk/gtkfilesel.h3
9 files changed, 65 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d55707468..d10f1e62c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index d55707468..d10f1e62c 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -27,6 +27,14 @@ Wed Feb 2 11:58:05 2000 Owen Taylor <otaylor@redhat.com>
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.
+ gtk_file_selection_get_filename returns the filename in the C
+ runtime encoding. It calls g_filename_from_utf8, but copies the
+ returned string to a static buffer, which is returned. I think
+ this is better than returning the result from g_filename_from_utf8
+ directly, which would mean all apps that use it would have to free
+ the return value. Or should this function care about this issue at
+ all? Maybe a new function with clearly defined semantics.
+
* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.
diff --git a/gtk/gtkfilesel.c b/gtk/gtkfilesel.c
index d3a190436..e79294864 100644
--- a/gtk/gtkfilesel.c
+++ b/gtk/gtkfilesel.c
@@ -728,9 +728,10 @@ gtk_file_selection_set_filename (GtkFileSelection *filesel,
gchar*
gtk_file_selection_get_filename (GtkFileSelection *filesel)
{
- static char nothing[2] = "";
- char *text;
+ static gchar nothing[2] = "";
+ static gchar something[MAXPATHLEN*2];
char *filename;
+ char *text;
g_return_val_if_fail (filesel != NULL, nothing);
g_return_val_if_fail (GTK_IS_FILE_SELECTION (filesel), nothing);
@@ -741,8 +742,10 @@ gtk_file_selection_get_filename (GtkFileSelection *filesel)
text = gtk_entry_get_text (GTK_ENTRY (filesel->selection_entry));
if (text)
{
- filename = cmpl_completion_fullname (text, filesel->cmpl_state);
- return g_filename_from_utf8 (filename);
+ filename = g_filename_from_utf8 (cmpl_completion_fullname (text, filesel->cmpl_state));
+ strncpy (something, filename, sizeof (something));
+ g_free (filename);
+ return something;
}
return nothing;
diff --git a/gtk/gtkfilesel.h b/gtk/gtkfilesel.h
index 24ff5de52..d5970c3f1 100644
--- a/gtk/gtkfilesel.h
+++ b/gtk/gtkfilesel.h
@@ -89,7 +89,8 @@ void gtk_file_selection_set_filename (GtkFileSelection *filesel,
/* This function returns the selected filename in the C runtime's
* multibyte string encoding, which may or may not be the same as that
* used by GDK (UTF-8). To convert to UTF-8, call g_filename_to_utf8().
- * The returned string should be deallocated with g_free().
+ * The returned string points to a statically allocated buffer and
+ * should be copied away.
*/
gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);