diff options
author | sudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-14 07:59:19 +0000 |
---|---|---|
committer | sudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-14 07:59:19 +0000 |
commit | d9c53aad457d92b40c5b016a80d0c6909a14cfa5 (patch) | |
tree | 30e9d2803a23106d61d5db9936e22f4b650f5164 /tools/gtk_clipboard_dump | |
parent | a386ef44352c398148a5b3ea438f9f4605aa2290 (diff) | |
download | chromium_src-d9c53aad457d92b40c5b016a80d0c6909a14cfa5.zip chromium_src-d9c53aad457d92b40c5b016a80d0c6909a14cfa5.tar.gz chromium_src-d9c53aad457d92b40c5b016a80d0c6909a14cfa5.tar.bz2 |
Fix several memory leaks in gtk_clipboard_dump utility.
BUG=
Review URL: https://chromiumcodereview.appspot.com/14917015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199945 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/gtk_clipboard_dump')
-rw-r--r-- | tools/gtk_clipboard_dump/gtk_clipboard_dump.cc | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/tools/gtk_clipboard_dump/gtk_clipboard_dump.cc b/tools/gtk_clipboard_dump/gtk_clipboard_dump.cc index c96ee00..4ddf1a2 100644 --- a/tools/gtk_clipboard_dump/gtk_clipboard_dump.cc +++ b/tools/gtk_clipboard_dump/gtk_clipboard_dump.cc @@ -5,6 +5,7 @@ #include <gtk/gtk.h> #include <stdio.h> #include <string.h> +#include <string> namespace { @@ -29,7 +30,10 @@ void PrintClipboardContents(GtkClipboard* clip) { printf("%d available targets:\n---------------\n", num_targets); for (int i = 0; i < num_targets; i++) { - printf(" [format: %s", gdk_atom_name(targets[i])); + gchar* target_name_cstr = gdk_atom_name(targets[i]); + std::string target_name(target_name_cstr); + g_free(target_name_cstr); + printf(" [format: %s", target_name.c_str()); GtkSelectionData* data = gtk_clipboard_wait_for_contents(clip, targets[i]); if (!data) { printf("]: NULL\n\n"); @@ -38,21 +42,20 @@ void PrintClipboardContents(GtkClipboard* clip) { printf(" / length: %d / bits %d]: ", data->length, data->format); - if (strstr(gdk_atom_name(targets[i]), "image")) { + if (strstr(target_name.c_str(), "image")) { printf("(image omitted)\n\n"); - continue; - } else if (strstr(gdk_atom_name(targets[i]), "TIMESTAMP")) { + } else if (strstr(target_name.c_str(), "TIMESTAMP")) { // TODO(estade): Print the time stamp in human readable format. printf("(time omitted)\n\n"); - continue; - } - - for (int j = 0; j < data->length; j++) { - // Output data one byte at a time. Currently wide strings look - // pretty weird. - printf("%c", (data->data[j] == 0 ? '_' : data->data[j])); + } else { + for (int j = 0; j < data->length; j++) { + // Output data one byte at a time. Currently wide strings look + // pretty weird. + printf("%c", (data->data[j] == 0 ? '_' : data->data[j])); + } + printf("\n\n"); } - printf("\n\n"); + gtk_selection_data_free(data); } if (num_targets <= 0) { @@ -63,6 +66,7 @@ void PrintClipboardContents(GtkClipboard* clip) { } g_free(targets); + gtk_selection_data_free(target_data); } } |