soup-request-data: return decoded contents for non-base64 data URLs
authorSergio Villar Senin <svillar@igalia.com>
Mon, 31 Jan 2011 12:29:22 +0000 (13:29 +0100)
committerSergio Villar Senin <svillar@igalia.com>
Mon, 31 Jan 2011 19:34:18 +0000 (20:34 +0100)
SoupRequestData was not returning the decoded version of data URLs when they
were not encoded in base64

https://bugzilla.gnome.org/show_bug.cgi?id=641022

libsoup/soup-request-data.c

index a385763..8c97bf8 100644 (file)
@@ -91,9 +91,14 @@ soup_request_data_send (SoupRequest   *request,
                        end = comma;
 
                if (end != start) {
-                       data->priv->content_type = g_strndup (start, end - start);
-                       if (!base64)
-                               soup_uri_decode (data->priv->content_type);
+                       char *encoded_content_type = g_strndup (start, end - start);
+
+                       if (base64)
+                               data->priv->content_type = encoded_content_type;
+                       else {
+                               data->priv->content_type = soup_uri_decode (encoded_content_type);
+                               g_free (encoded_content_type);
+                       }
                }
        }
 
@@ -119,9 +124,8 @@ soup_request_data_send (SoupRequest   *request,
                                goto fail;
                        }
                } else {
-                       soup_uri_decode (start);
-                       data->priv->content_length = strlen (start);
-                       buf = g_memdup (start, data->priv->content_length);
+                       buf = (guchar *) soup_uri_decode (start);
+                       data->priv->content_length = strlen ((const char *) buf);
                }
 
                g_memory_input_stream_add_data (G_MEMORY_INPUT_STREAM (memstream),