summaryrefslogtreecommitdiffstats
path: root/tools/gtk_clipboard_dump
diff options
context:
space:
mode:
authorsudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-14 07:59:19 +0000
committersudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-14 07:59:19 +0000
commitd9c53aad457d92b40c5b016a80d0c6909a14cfa5 (patch)
tree30e9d2803a23106d61d5db9936e22f4b650f5164 /tools/gtk_clipboard_dump
parenta386ef44352c398148a5b3ea438f9f4605aa2290 (diff)
downloadchromium_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.cc28
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);
}
}