diff libgaim/protocols/oscar/oscar.c @ 15284:c2f15e2117dc

[gaim-migrate @ 18073] gaim_xfer_new() can return NULL via g_return_if_fail(). It should therefore not be assumed that it returns a GaimXfer; check against its return value before proceeding when creating a GaimXfer. committer: Tailor Script <tailor@pidgin.im>
author Evan Schoenberg <evan.s@dreskin.net>
date Thu, 04 Jan 2007 23:20:12 +0000
parents 2e3ffe29f9ae
children e5c75076c6d1
line wrap: on
line diff
--- a/libgaim/protocols/oscar/oscar.c	Thu Jan 04 19:21:10 2007 +0000
+++ b/libgaim/protocols/oscar/oscar.c	Thu Jan 04 23:20:12 2007 +0000
@@ -6308,18 +6308,21 @@
 	account = gaim_connection_get_account(gc);
 
 	xfer = gaim_xfer_new(account, GAIM_XFER_SEND, who);
-	gaim_xfer_ref(xfer);
-	gaim_xfer_set_init_fnc(xfer, peer_oft_sendcb_init);
-	gaim_xfer_set_cancel_send_fnc(xfer, peer_oft_cb_generic_cancel);
-	gaim_xfer_set_request_denied_fnc(xfer, peer_oft_cb_generic_cancel);
-	gaim_xfer_set_ack_fnc(xfer, peer_oft_sendcb_ack);
-
-	conn = peer_connection_new(od, OSCAR_CAPABILITY_SENDFILE, who);
-	conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME;
-	conn->flags |= PEER_CONNECTION_FLAG_APPROVED;
-	aim_icbm_makecookie(conn->cookie);
-	conn->xfer = xfer;
-	xfer->data = conn;
+	if (xfer)
+	{
+		gaim_xfer_ref(xfer);
+		gaim_xfer_set_init_fnc(xfer, peer_oft_sendcb_init);
+		gaim_xfer_set_cancel_send_fnc(xfer, peer_oft_cb_generic_cancel);
+		gaim_xfer_set_request_denied_fnc(xfer, peer_oft_cb_generic_cancel);
+		gaim_xfer_set_ack_fnc(xfer, peer_oft_sendcb_ack);
+
+		conn = peer_connection_new(od, OSCAR_CAPABILITY_SENDFILE, who);
+		conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME;
+		conn->flags |= PEER_CONNECTION_FLAG_APPROVED;
+		aim_icbm_makecookie(conn->cookie);
+		conn->xfer = xfer;
+		xfer->data = conn;
+	}
 
 	return xfer;
 }