Fix some issues with PurpleSavedPresence on 32bit machines

Sun, 16 Jul 2023 04:43:58 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 16 Jul 2023 04:43:58 -0500
changeset 42240
8920a8452aea
parent 42239
a453c0c955e9
child 42241
43fdbe891f5a

Fix some issues with PurpleSavedPresence on 32bit machines

I'm not sure why the GDateTime wasn't failing on amd64, but it should be NULL
when it's not set.

Testing Done:
Ran the unit tests on a 32bit debian container as well as my machine.

Reviewed at https://reviews.imfreedom.org/r/2515/

libpurple/purplesavedpresence.c file | annotate | diff | comparison | revisions
libpurple/tests/test_saved_presence.c file | annotate | diff | comparison | revisions
--- a/libpurple/purplesavedpresence.c	Sun Jul 16 03:24:38 2023 -0500
+++ b/libpurple/purplesavedpresence.c	Sun Jul 16 04:43:58 2023 -0500
@@ -94,6 +94,10 @@
 	}
 
 	datetime = g_value_get_boxed(value);
+	if(datetime == NULL) {
+		return NULL;
+	}
+
 	timestamp = g_date_time_format_iso8601(datetime);
 	if(timestamp != NULL) {
 		GVariant *variant = NULL;
--- a/libpurple/tests/test_saved_presence.c	Sun Jul 16 03:24:38 2023 -0500
+++ b/libpurple/tests/test_saved_presence.c	Sun Jul 16 04:43:58 2023 -0500
@@ -34,6 +34,7 @@
 	PurplePresencePrimitive primitive;
 	GDateTime *last_used = NULL;
 	GDateTime *last_used1 = NULL;
+	guint64 expected_use_count = 123;
 	guint64 use_count;
 	char *id = NULL;
 	char *name = NULL;
@@ -49,7 +50,7 @@
 	presence = g_object_new(
 		PURPLE_TYPE_SAVED_PRESENCE,
 		"last-used", last_used,
-		"use-count", 123,
+		"use-count", expected_use_count,
 		"id", "leeloo dallas multipass",
 		"name", "my saved status",
 		"primitive", PURPLE_PRESENCE_PRIMITIVE_STREAMING,
@@ -74,7 +75,7 @@
 	g_assert_true(g_date_time_equal(last_used, last_used1));
 	g_clear_pointer(&last_used1, g_date_time_unref);
 
-	g_assert_cmpuint(use_count, ==, 123);
+	g_assert_cmpuint(use_count, ==, expected_use_count);
 
 	g_assert_cmpstr(id, ==, "leeloo dallas multipass");
 	g_clear_pointer(&id, g_free);

mercurial