bug-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fix, GDL2, EOQualifier (getKey()): args


From: David Ayers
Subject: Re: Fix, GDL2, EOQualifier (getKey()): args
Date: Thu, 24 Apr 2008 09:44:27 +0200
User-agent: Mozilla-Thunderbird 2.0.0.9 (X11/20080110)

Georg Fleischmann schrieb:
>> We are looking into this a time permits.  Maybe you could open a bug
>> report for this?
> 
> Well, I don't have set up an account yet and limited time also... that's
> why i didn't follow-up on the bug-tracking system.

ACK... I can relate :-) no problem.

> I see that you are already pretty close to a solution that works for all
> platforms... :-)

Yes I think so :-).  I've attached a patch based on everyones feedback.
 It would be great if folks with affected platforms could tell me if it
works for them. (if it's easier I can commit it as a WIP).

> I will continue to dig up and file proposals to issues I encounter while
> fitting my app to GDL2.

Cool.

Cheers,
David
Index: EOControl/EOQualifier.m
===================================================================
--- EOControl/EOQualifier.m     (Revision 26465)
+++ EOControl/EOQualifier.m     (Arbeitskopie)
@@ -37,6 +37,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <stdarg.h>
 
 #ifdef GNUSTEP
 #include <Foundation/NSCoder.h>
@@ -196,7 +197,7 @@
        BOOL *isKeyValue,
        BOOL useVAList,
        NSEnumerator *argsEnum,
-       va_list args)
+       va_list *args)
 {
   NSMutableString *key;
   NSString *classString = nil;
@@ -301,7 +302,7 @@
                case '@':
                  if (useVAList)
                    {
-                     argObj = va_arg(args, id);
+                     argObj = va_arg(*args, id);
                    }
                  else
                    {
@@ -333,7 +334,7 @@
                case 's':
                  if (useVAList)
                    {
-                     argString = va_arg(args, const char *);
+                     argString = va_arg(*args, const char *);
                    }
                  else
                    {
@@ -367,7 +368,7 @@
                case 'd':
                  if (useVAList)
                    {
-                     argInt = va_arg(args, int);
+                     argInt = va_arg(*args, int);
                    }
                  else
                    {
@@ -403,7 +404,7 @@
                    {
                      /* 'float' is promoted to 'double' when passed through 
'...'
                         (so you should pass `double' not `float' to `va_arg') 
*/
-                     argFloat = va_arg(args, double);
+                     argFloat = va_arg(*args, double);
                    }
                  else
                    {
@@ -589,7 +590,7 @@
 }
 
 static EOQualifier *
-_qualifierWithArgs(id self, SEL _cmd, NSString *format, BOOL useVAList, 
NSArray *array, va_list args)
+_qualifierWithArgs(id self, SEL _cmd, NSString *format, BOOL useVAList, 
NSArray *array, va_list *args)
 {
   NSEnumerator *argEnum = [array objectEnumerator];
   unichar *s0;
@@ -812,13 +813,19 @@
 {
   va_list varargs;
 
-  return _qualifierWithArgs(self, _cmd, format, NO, args, varargs);           
+  return _qualifierWithArgs(self, _cmd, format, NO, args, &varargs);
 }
 
 + (EOQualifier *)qualifierWithQualifierFormat: (NSString *)format
                                   varargList: (va_list)args
 {
-  return _qualifierWithArgs(self, _cmd, format, YES, nil, args);              
+  EOQualifier *qualifier;
+  va_list varargs;
+
+  va_copy(varargs, args);
+  qualifier = _qualifierWithArgs(self, _cmd, format, YES, nil, &varargs);
+  va_end(varargs);
+  return qualifier;
 }
 
 + (EOQualifier *)qualifierToMatchAllValues: (NSDictionary *)values

reply via email to

[Prev in Thread] Current Thread [Next in Thread]