Don't refuse to encode a single byte. (Milan Crha)

2007-11-23  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c (g_base64_encode): Don't refuse to encode
        a single byte.  (Milan Crha)

        * tests/base64-test.c: Test encoding short strings.



svn path=/trunk/; revision=5919
This commit is contained in:
Matthias Clasen
2007-11-23 17:58:00 +00:00
committed by Matthias Clasen
parent 39ad6fbd02
commit 78c06eafe1
3 changed files with 23 additions and 11 deletions

View File

@@ -83,24 +83,24 @@ test_incremental (gboolean line_break,
}
static void
test_full (void)
test_full (gint length)
{
char *text;
guchar *data2;
gsize len;
text = g_base64_encode (data, DATA_SIZE);
text = g_base64_encode (data, length);
data2 = g_base64_decode (text, &len);
g_free (text);
if (len != DATA_SIZE)
if (len != length)
{
g_print ("Wrong decoded length: got %d, expected %d\n",
len, DATA_SIZE);
len, length);
exit (1);
}
if (memcmp (data, data2, DATA_SIZE) != 0)
if (memcmp (data, data2, length) != 0)
{
g_print ("Wrong decoded base64 data\n");
exit (1);
@@ -116,7 +116,10 @@ main (int argc, char *argv[])
for (i = 0; i < DATA_SIZE; i++)
data[i] = (guchar)i;
test_full ();
test_full (DATA_SIZE);
test_full (1);
test_full (2);
test_full (3);
test_incremental (FALSE, DATA_SIZE);
test_incremental (TRUE, DATA_SIZE);
@@ -127,5 +130,9 @@ main (int argc, char *argv[])
test_incremental (FALSE, DATA_SIZE - 2);
test_incremental (TRUE, DATA_SIZE - 2);
test_incremental (FALSE, 1);
test_incremental (FALSE, 2);
test_incremental (FALSE, 3);
return 0;
}