summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorg Schuler <jcsjcs@users.sourceforge.net>2006-05-02 14:19:19 +0000
committerJorg Schuler <jcsjcs@users.sourceforge.net>2006-05-02 14:19:19 +0000
commitcac23ce995e682641a465ad5b9e33e4660e8103b (patch)
treeecbe8183ad99ffe5e5db6be2d1c48155160b1dbe
parent55a739f48a25bb4987bb1f9fe46633418551c23d (diff)
downloadlibgpod-cac23ce995e682641a465ad5b9e33e4660e8103b.tar.gz
libgpod-cac23ce995e682641a465ad5b9e33e4660e8103b.tar.xz
libgpod-cac23ce995e682641a465ad5b9e33e4660e8103b.zip
* src/itdb_itunesdb.c: smart playlists: avoid assertion
when writing rules with empty strings. git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1251 f01d2545-417e-4e96-918e-98f8d0dbbcb6
-rw-r--r--ChangeLog5
-rw-r--r--src/itdb_itunesdb.c14
2 files changed, 14 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 8bac87f..0850c88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-02 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+ * src/itdb_itunesdb.c: smart playlists: avoid assertion
+ when writing rules with empty strings.
+
2006-04-26 Jorg Schuler <jcsjcs at users.sourceforge.net>
* tests/Makefile.am: removed 'test-rebuild-db' from
diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c
index b35565e..f82021f 100644
--- a/src/itdb_itunesdb.c
+++ b/src/itdb_itunesdb.c
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-04-04 23:42:19 jcs>
+/* Time-stamp: <2006-05-02 23:14:46 jcs>
|
| Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
| Part of the gtkpod project.
@@ -2820,10 +2820,10 @@ static void put_data_seek (WContents *cts, gchar *data,
gulong len, gulong seek)
{
g_return_if_fail (cts);
- g_return_if_fail (data);
if (len != 0)
{
+ g_return_if_fail (data);
wcontents_maybe_expand (cts, len, seek);
memcpy (&cts->contents[seek], data, len);
@@ -3501,9 +3501,13 @@ static void mk_mhod (WContents *cts, MHODData *mhod)
put32_n0 (cts, 11); /* unknown */
if (ft == splft_string)
{ /* write string-type rule */
- gunichar2 *entry_utf16 =
- g_utf8_to_utf16 (splr->string, -1,NULL,NULL,NULL);
- gint len = utf16_strlen (entry_utf16);
+ gunichar2 *entry_utf16 = NULL;
+ gint len;
+ /* splr->string may be NULL */
+ if (splr->string)
+ entry_utf16 = g_utf8_to_utf16 (splr->string,
+ -1,NULL,NULL,NULL);
+ len = utf16_strlen (entry_utf16);
fixup_big_utf16 (entry_utf16);
put32bint (cts, 2*len); /* length of string */
put_data (cts, (gchar *)entry_utf16, 2*len);