libpurple/protocols/facebook/thrift.c

branch
facebook
changeset 37267
2dac11959ea1
parent 37250
3f5570a17b15
child 37268
2d85594bb9ee
--- a/libpurple/protocols/facebook/thrift.c	Thu Jun 18 00:45:16 2015 -0400
+++ b/libpurple/protocols/facebook/thrift.c	Mon Jun 22 16:26:50 2015 -0400
@@ -385,14 +385,25 @@
 gboolean
 fb_thrift_read_str(FbThrift *thft, gchar **str)
 {
-	gint32 size;
+	FbThriftPrivate *priv;
+	gboolean res;
 	guint8 *data;
+	guint32 size;
+
+	g_return_val_if_fail(FB_IS_THRIFT(thft), FALSE);
+	priv = thft->priv;
 
 	if (str != NULL) {
 		*str = NULL;
 	}
 
-	if (!fb_thrift_read_i32(thft, &size)) {
+	if (priv->flags & FB_THRIFT_FLAG_COMPACT) {
+		res = fb_thrift_read_vi32(thft, &size);
+	} else {
+		res = fb_thrift_read_i32(thft, (gint32*) &size);
+	}
+
+	if (!res) {
 		return FALSE;
 	}
 
@@ -769,12 +780,21 @@
 void
 fb_thrift_write_str(FbThrift *thft, const gchar *str)
 {
+	FbThriftPrivate *priv;
 	guint32 size;
 
+	g_return_if_fail(FB_IS_THRIFT(thft));
 	g_return_if_fail(str != NULL);
 
+	priv = thft->priv;
 	size = strlen(str);
-	fb_thrift_write_vi32(thft, size);
+
+	if (priv->flags & FB_THRIFT_FLAG_COMPACT) {
+		fb_thrift_write_vi32(thft, size);
+	} else {
+		fb_thrift_write_i32(thft, size);
+	}
+
 	fb_thrift_write(thft, str, size);
 }
 

mercurial