Checked return value of XGetWindowProperty and return false if it fails.

Signed-off-by: Erkki Seppälä <erkki.sepp...@vincit.fi>
---
 modules/im/ximcp/imTrX.c |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/modules/im/ximcp/imTrX.c b/modules/im/ximcp/imTrX.c
index 47c231e..165832c 100644
--- a/modules/im/ximcp/imTrX.c
+++ b/modules/im/ximcp/imTrX.c
@@ -377,14 +377,19 @@ _XimXGetReadData(
            *ret_len  = (int)nitems;
            if (bytes_after_ret > 0) {
                XFree(prop_ret);
-               XGetWindowProperty(im->core.display,
-                   spec->lib_connect_wid, prop, 0L,
-                   ((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType,
-                   &type_ret, &format_ret, &nitems, &bytes_after_ret,
-                   &prop_ret);
-               XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
-                   XA_STRING, 8, PropModePrepend, &prop_ret[length],
-                   (nitems - length));
+               if (XGetWindowProperty(im->core.display,
+                                      spec->lib_connect_wid, prop, 0L,
+                                      ((length + bytes_after_ret + 3)/ 4), 
+                                      True, AnyPropertyType,
+                                      &type_ret, &format_ret, &nitems, 
+                                      &bytes_after_ret, 
+                                      &prop_ret) == Success) {
+                   XChangeProperty(im->core.display, spec->lib_connect_wid, 
prop,
+                                   XA_STRING, 8, PropModePrepend, 
&prop_ret[length],
+                                   (nitems - length));
+               } else {
+                   return False;
+               }
            }
        } else {
            (void)memcpy(buf, prop_ret, buf_len);
@@ -393,10 +398,14 @@ _XimXGetReadData(
 
            if (bytes_after_ret > 0) {
                XFree(prop_ret);
-               XGetWindowProperty(im->core.display,
-               spec->lib_connect_wid, prop, 0L,
-               ((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType,
-               &type_ret, &format_ret, &nitems, &bytes_after_ret, &prop_ret);
+               if (XGetWindowProperty(im->core.display,
+                                      spec->lib_connect_wid, prop, 0L,
+                                      ((length + bytes_after_ret + 3)/ 4), 
+                                      True, AnyPropertyType,
+                                      &type_ret, &format_ret, &nitems, 
+                                      &bytes_after_ret, &prop_ret) != Success) 
{
+                   return False;
+               }
            }
            XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
                    XA_STRING, 8, PropModePrepend, &prop_ret[buf_len], len);
-- 
1.7.0.4

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to