On Wed, Jan 02, 2013 at 09:02:12AM -0200, Lucas De Marchi wrote: > This was a problem introduced in the merge of edbus into efl single > tree. You say you are using efl stable, so you should not have this. > > Could you check if efl trunk works for you? Since there won't be a > separate edbus release, there's not much point in having it anyway.
Thanks for fixing it in efl trunk, patch for IN-EFL edbus attached. -- Martin 'JaMa' Jansa jabber: [email protected]
Backport r82017 from efl tree
diff --git a/IN-EFL/edbus/configure.ac b/IN-EFL/edbus/configure.ac
index e3e1e12..27ba2b0 100644
--- a/IN-EFL/edbus/configure.ac
+++ b/IN-EFL/edbus/configure.ac
@@ -65,7 +65,6 @@
AC_PROG_MKDIR_P
AM_PROG_CC_C_O
AC_C___ATTRIBUTE__
-AC_C_VA_LIST_AS_ARRAY
AC_DISABLE_STATIC
define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
diff --git a/IN-EFL/edbus/src/lib/edbus_message.c b/IN-EFL/edbus/src/lib/edbus_message.c
index 2b58ca6..d6694e9 100644
--- a/IN-EFL/edbus/src/lib/edbus_message.c
+++ b/IN-EFL/edbus/src/lib/edbus_message.c
@@ -273,8 +273,8 @@ edbus_message_arguments_vget(const EDBus_Message *msg, const char *signature, va
return _edbus_message_arguments_vget((EDBus_Message *)msg, signature, ap);
}
-EAPI Eina_Bool
-edbus_message_iter_arguments_vappend(EDBus_Message_Iter *iter, const char *signature, va_list ap)
+static Eina_Bool
+_edbus_message_iter_arguments_vappend(EDBus_Message_Iter *iter, const char *signature, va_list *aq)
{
DBusSignatureIter signature_iter;
Eina_Bool r = EINA_TRUE;
@@ -288,14 +288,13 @@ edbus_message_iter_arguments_vappend(EDBus_Message_Iter *iter, const char *signa
while ((type = dbus_signature_iter_get_signature(&signature_iter)))
{
if (type[0] != DBUS_TYPE_VARIANT && !type[1])
- r = append_basic(type[0], MAKE_PTR_FROM_VA_LIST(ap),
- &iter->dbus_iterator);
+ r = append_basic(type[0], aq, &iter->dbus_iterator);
else
{
EDBus_Message_Iter **user_itr;
EDBus_Message_Iter *sub;
- user_itr = va_arg(ap, EDBus_Message_Iter **);
+ user_itr = va_arg(*aq, EDBus_Message_Iter **);
sub = _message_iterator_new(EINA_TRUE);
if (!sub)
{
@@ -340,6 +339,20 @@ next:
}
return r;
+
+}
+
+EAPI Eina_Bool
+edbus_message_iter_arguments_vappend(EDBus_Message_Iter *iter, const char *signature, va_list ap)
+{
+ va_list aq;
+ Eina_Bool ret;
+
+ va_copy(aq, ap);
+ ret = _edbus_message_iter_arguments_vappend(iter, signature, &aq);
+ va_end(aq);
+
+ return ret;
}
EAPI Eina_Bool
@@ -422,7 +435,7 @@ append_basic(char type, va_list *vl, DBusMessageIter *iter)
}
static Eina_Bool
-_edbus_message_arguments_vappend(EDBus_Message *msg, const char *signature, va_list ap)
+_edbus_message_arguments_vappend(EDBus_Message *msg, const char *signature, va_list *aq)
{
DBusSignatureIter signature_iter;
EDBus_Message_Iter *iter;
@@ -440,8 +453,7 @@ _edbus_message_arguments_vappend(EDBus_Message *msg, const char *signature, va_l
while ((type = dbus_signature_iter_get_current_type(&signature_iter)))
{
if (dbus_type_is_basic(type))
- r = append_basic(type, MAKE_PTR_FROM_VA_LIST(ap),
- &iter->dbus_iterator);
+ r = append_basic(type, aq, &iter->dbus_iterator);
else
{
ERR("sig = %s | edbus_message_arguments_append() and \
@@ -468,7 +480,7 @@ edbus_message_arguments_append(EDBus_Message *msg, const char *signature, ...)
EINA_SAFETY_ON_NULL_RETURN_VAL(signature, EINA_FALSE);
va_start(ap, signature);
- ret = _edbus_message_arguments_vappend(msg, signature, ap);
+ ret = _edbus_message_arguments_vappend(msg, signature, &ap);
va_end(ap);
return ret;
}
@@ -476,9 +488,17 @@ edbus_message_arguments_append(EDBus_Message *msg, const char *signature, ...)
EAPI Eina_Bool
edbus_message_arguments_vappend(EDBus_Message *msg, const char *signature, va_list ap)
{
+ va_list aq;
+ Eina_Bool ret;
+
EDBUS_MESSAGE_CHECK_RETVAL(msg, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(signature, EINA_FALSE);
- return _edbus_message_arguments_vappend(msg, signature, ap);
+
+ va_copy(aq, ap);
+ ret = _edbus_message_arguments_vappend(msg, signature, &aq);
+ va_end(aq);
+
+ return ret;
}
EAPI EDBus_Message_Iter *
@@ -701,21 +721,8 @@ edbus_message_iter_get_and_next(EDBus_Message_Iter *iter, char signature, ...)
return EINA_TRUE;
}
-EAPI Eina_Bool
-edbus_message_iter_arguments_get(EDBus_Message_Iter *iter, const char *signature, ...)
-{
- va_list ap;
- Eina_Bool ret;
-
- va_start(ap, signature);
- ret = edbus_message_iter_arguments_vget(iter, signature, ap);
- va_end(ap);
-
- return ret;
-}
-
-EAPI Eina_Bool
-edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char *signature, va_list ap)
+static Eina_Bool
+_edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char *signature, va_list *aq)
{
int iter_type;
DBusSignatureIter sig_iter;
@@ -739,10 +746,10 @@ edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char *signatur
}
if (dbus_type_is_basic(iter_type))
- get_basic(iter_type, &iter->dbus_iterator, MAKE_PTR_FROM_VA_LIST(ap));
+ get_basic(iter_type, &iter->dbus_iterator, aq);
else
{
- EDBus_Message_Iter **user_itr = va_arg(ap, EDBus_Message_Iter **);
+ EDBus_Message_Iter **user_itr = va_arg(*aq, EDBus_Message_Iter **);
EDBus_Message_Iter *sub_itr;
sub_itr = _message_iterator_new(EINA_FALSE);
@@ -760,6 +767,33 @@ edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char *signatur
}
return dbus_signature_iter_get_current_type(&sig_iter) == DBUS_TYPE_INVALID;
+
+}
+
+EAPI Eina_Bool
+edbus_message_iter_arguments_get(EDBus_Message_Iter *iter, const char *signature, ...)
+{
+ va_list ap;
+ Eina_Bool ret;
+
+ va_start(ap, signature);
+ ret = _edbus_message_iter_arguments_vget(iter, signature, &ap);
+ va_end(ap);
+
+ return ret;
+}
+
+EAPI Eina_Bool
+edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char *signature, va_list ap)
+{
+ va_list aq;
+ Eina_Bool ret;
+
+ va_copy(aq, ap);
+ ret = _edbus_message_iter_arguments_vget(iter, signature, &aq);
+ va_end(aq);
+
+ return ret;
}
EAPI void
diff --git a/IN-EFL/edbus/src/lib/edbus_private.h b/IN-EFL/edbus/src/lib/edbus_private.h
index 6b2f778..1a69c9f 100644
--- a/IN-EFL/edbus/src/lib/edbus_private.h
+++ b/IN-EFL/edbus/src/lib/edbus_private.h
@@ -82,10 +82,4 @@ EDBus_Signal_Handler *_edbus_signal_handler_add(EDBus_Connection *conn, const c
EDBus_Message *edbus_message_signal_new(const char *path, const char *interface, const char *name) EINA_ARG_NONNULL(1, 2, 3) EINA_WARN_UNUSED_RESULT;
-#ifdef HAVE_VA_LIST_AS_ARRAY
-#define MAKE_PTR_FROM_VA_LIST(arg) ((va_list *)(arg))
-#else
-#define MAKE_PTR_FROM_VA_LIST(arg) (&(arg))
-#endif
-
#endif
diff -uNr a/IN-EFL/edbus/m4/ac_valist.m4 b/IN-EFL/edbus/m4/ac_valist.m4
--- a/IN-EFL/edbus/m4/ac_valist.m4 2013-01-02 10:53:21.000000000 +0100
+++ b/IN-EFL/edbus/m4/ac_valist.m4 1970-01-01 01:00:00.000000000 +0100
@@ -1,48 +0,0 @@
-dnl That code is public domain and can be freely used or copied.
-dnl Originally snatched from somewhere...
-
-dnl Macro for checking if va_list is an array
-
-dnl Usage: AC_C_VA_LIST_AS_ARRAY
-dnl call AC_DEFINE for HAVE_VA_LIST_AS_ARRAY
-dnl if for this architecture va_list is defined as an array
-
-AC_DEFUN([AC_C_VA_LIST_AS_ARRAY],
-[
-
-AC_MSG_CHECKING([whether va_list is defined as an array])
-
-AC_CACHE_VAL([ac_cv_valistasarray],
- [AC_TRY_RUN(
- [
-#include <stdlib.h>
-#include <stdarg.h>
-void foo(int i, ...)
-{
- va_list ap1, ap2;
- va_start(ap1, i);
- ap2 = ap1;
- if (va_arg(ap2, int) != 123 || va_arg(ap1, int) != 123)
- exit(1);
- va_end(ap1);
-}
-int main(void)
-{
- foo(0, 123);
- return(0);
-}
- ],
- [ac_cv_valistasarray="no"],
- [ac_cv_valistasarray="yes"],
- [ac_cv_valistasarray="no"]
- )])
-
-AC_MSG_RESULT($ac_cv_valistasarray)
-
-if test "x${ac_cv_valistasarray}" = "xyes" ; then
- AC_DEFINE([HAVE_VA_LIST_AS_ARRAY], [1], [Define to 1 if va_list is an array])
-fi
-
-])
-
-dnl End of ac_valist.m4
signature.asc
Description: Digital signature
------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnmore_122712
_______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
