diff options
author | Tor Lillqvist <tml@src.gnome.org> | 2000-02-03 01:42:51 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2000-02-03 01:42:51 +0000 |
commit | a30c4b9e94943b2fa70e38be197529f84fbe6ad5 (patch) | |
tree | a540659be70ac66f588ffe7b94cc1b60e6e581e3 | |
parent | e57b1afa2b4c91bcfecef26e4bff5280bd3563de (diff) | |
download | gtk+-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-- | ChangeLog | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 8 | ||||
-rw-r--r-- | gtk/gtkfilesel.c | 11 | ||||
-rw-r--r-- | gtk/gtkfilesel.h | 3 |
9 files changed, 65 insertions, 5 deletions
@@ -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 d557074680..d10f1e62c2 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 d557074680..d10f1e62c2 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 d557074680..d10f1e62c2 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 d557074680..d10f1e62c2 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 d557074680..d10f1e62c2 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 d557074680..d10f1e62c2 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 d3a1904364..e792948640 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 24ff5de521..d5970c3f1a 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); |