discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6

commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Tue Jan 21 16:07:38 2014 -0500

    okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
    
    apparently I read the commit order wrong and this fix went in for 1.4.0, 
not 1.3.2, which means anyone who has 1.3.2 has been having lots of fun crashes 
for the past 24 hours
---
 configure.ac                         |  4 +---
 src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++++++++++----
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2d2e377..373ea6d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then
    ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent])
    ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], 
[XScreenSaverSelectInput])
 
-   if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then
-      PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= 1.3.1 
required])])
-   fi
+   PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good 
xrandr])], [])
 
    if test "${want_xpresent}" = "yes"; then
       ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], 
[XPresentQueryExtension])
diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c 
b/src/lib/ecore_x/xlib/ecore_x_randr.c
index b477777..db1f109 100644
--- a/src/lib/ecore_x/xlib/ecore_x_randr.c
+++ b/src/lib/ecore_x/xlib/ecore_x_randr.c
@@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window root, 
Ecore_X_Randr_Output output,
           {
              if (info->name)
                {
-                  ret = malloc(info->nameLen + 1);
-                  memcpy(ret, info->name, info->nameLen);
-                  ret[info->nameLen] = 0;
-                  if (len) *len = info->nameLen;
+                  size_t s;
+#ifdef XRANDR_GOOD
+                  s = info->nameLen;
+#else
+                  /* pre 1.4.0 does not fill in info->nameLen */
+                  s = strlen(info->name);
+#endif
+                  ret = malloc(s + 1);
+                  memcpy(ret, info->name, s);
+                  ret[s] = 0;
+                  if (len) *len = s;
                }
 
              /* free the output info */

-- 


Reply via email to