discuss-gnustep
[Top][All Lists]
Advanced

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

Re: GDL2: prototypes and EOAttribute.m


From: Mark Clements
Subject: Re: GDL2: prototypes and EOAttribute.m
Date: Mon, 1 May 2017 21:25:07 +0000

I have had a first attempt at getting the testsuite working with GDL2.

It seems to have been a while since the GDL2 testsuite was updated (see
patch below). Suggested changes include:
 + Bug fixes on labelling
 + Change -cString to -UTF8String
 + Change sel_eq to sel_isEqual
 + Change #include "../ObjectTesting.h" to #include "ObjectTesting.h"
 + Change ADDITIONAL_NATIVE_LIBS+=EOControl EOAccess  to
ADDITIONAL_NATIVE_LIBS+=EOAccess EOControl (?)
 + Comment out TEST_EXCEPTION: is this still defined?

This gave me 1031 passed tests, 10 failed sets, 9 failed tests and 5
failed files.

I was not certain whether the failed tests indicate that the Key Value
Coding mechanism is broken. Any guidance on this point would be welcomed.

Kindly, Mark.


Index: gdl2/Bug8993/test00.m
===================================================================
--- gdl2/Bug8993/test00.m    (revision 40495)
+++ gdl2/Bug8993/test00.m    (working copy)
@@ -93,7 +93,7 @@
   [ec saveChanges];
 
   END_SET("Bug8993 preperation");
-  START_SET(Bug8993);
+  START_SET("Bug8993");
   [ec deleteObject: objS];
   START_TEST(YES);
   [ec saveChanges];
Index: gdl2/EOAdaptor/EOAdaptorEncoding.m
===================================================================
--- gdl2/EOAdaptor/EOAdaptorEncoding.m    (revision 40495)
+++ gdl2/EOAdaptor/EOAdaptorEncoding.m    (working copy)
@@ -41,7 +41,7 @@
 
   /*  Now we have the testcases for the installed Adaptors.  */
 
-  START_SET(YES);
+  START_SET("EOAdaptorEncoding");
 
   adaptor = [EOAdaptor adaptorWithName:[[EOAdaptor
availableAdaptorNames] lastObject]];
   map = [@"{"
@@ -98,7 +98,7 @@
       databaseEncoding = [adaptor databaseEncoding];
       result = result && (expectedEncoding == databaseEncoding ? YES : NO);
     }
-  END_TEST(result, [@"-[EOAdaptor databaseEncoding]" cString]);
+  END_TEST(result, "-[EOAdaptor databaseEncoding]");
          
 
   END_SET("EOAdaptorEncoding");
Index: gdl2/EOAdaptor/EOAdaptorTypes00.m
===================================================================
--- gdl2/EOAdaptor/EOAdaptorTypes00.m    (revision 40495)
+++ gdl2/EOAdaptor/EOAdaptorTypes00.m    (working copy)
@@ -90,7 +90,7 @@
       START_TEST(YES)
       adaptorNamesArr = [EOAdaptor availableAdaptorNames];
       result = [adaptorNamesArr containsObject: currAdaptorName];
-      END_TEST(result, [[NSString
stringWithFormat:@"availableAdaptorNames contains '%@'",
currAdaptorName] cString]);
+      END_TEST(result, "availableAdaptorNames contains '%s'",
[currAdaptorName UTF8String]);
          
       currAdaptor = [EOAdaptor adaptorWithName: currAdaptorName];
       [currAdaptor setConnectionDictionary: [model connectionDictionary]];
Index: gdl2/EODataSource/test00.m
===================================================================
--- gdl2/EODataSource/test00.m    (revision 40495)
+++ gdl2/EODataSource/test00.m    (working copy)
@@ -103,7 +103,7 @@
 
   START_TEST(YES);
   [detailDS qualifyWithRelationshipKey:@"orderPos" ofObject: tmp1];
-  START_SET("-[EODetailDataSource qualifyWithRelationshipKey:ofObject:]"
+  START_SET("-[EODetailDataSource qualifyWithRelationshipKey:ofObject:]");
   result = ([detailDS masterObject] == tmp1);
   END_SET("-[EODetailDataSource qualifyWithRelationshipKey:ofObject:]"
       "result evaluation");
Index: gdl2/EODisplayGroup/EODisplayGroup00.m
===================================================================
--- gdl2/EODisplayGroup/EODisplayGroup00.m    (revision 40495)
+++ gdl2/EODisplayGroup/EODisplayGroup00.m    (working copy)
@@ -44,7 +44,7 @@
   if (![obj isKindOfClass: [self class]])
     return NO;
 
-  return sel_eq(_selector, (SEL)((EOKeyValueQualifier *)obj)->_selector)
+  return sel_isEqual(_selector, (SEL)((EOKeyValueQualifier
*)obj)->_selector)
          && [_key testIsEqual:((EOKeyValueQualifier *)obj)->_key]
          && [_value testIsEqual:((EOKeyValueQualifier *)obj)->_value];
 }
Index: gdl2/EOKeyValueCoding/EOKeyValueCoding00.m
===================================================================
--- gdl2/EOKeyValueCoding/EOKeyValueCoding00.m    (revision 40495)
+++ gdl2/EOKeyValueCoding/EOKeyValueCoding00.m    (working copy)
@@ -229,14 +229,14 @@
   END_TEST(result, "-[NSObject(EOKeyValueCoding) unableToSetNilForKey:]");
 
   obj = [EOKVCTester new];
-  TEST_EXCEPTION(([obj takeValue: null forKey: @"other_int_iv"]); ,
-         NSInvalidArgumentException, YES,
-         "-[NSObject(EOKeyValueCoding) unableToSetNilForKey:]"
-         " raise (EONull)");
-  TEST_EXCEPTION(([obj takeValue: nil forKey: @"other_int_iv"]); ,
-         NSInvalidArgumentException, YES,
-         "-[NSObject(EOKeyValueCoding) unableToSetNilForKey:]"
-         " raise (nil)");
+  // TEST_EXCEPTION(([obj takeValue: null forKey: @"other_int_iv"]); ,
+  //          NSInvalidArgumentException, YES,
+  //          "-[NSObject(EOKeyValueCoding) unableToSetNilForKey:]"
+  //          " raise (EONull)");
+  // TEST_EXCEPTION(([obj takeValue: nil forKey: @"other_int_iv"]); ,
+  //          NSInvalidArgumentException, YES,
+  //          "-[NSObject(EOKeyValueCoding) unableToSetNilForKey:]"
+  //          " raise (nil)");
 
   /* NSArray */
   START_TEST(YES);
Index: gdl2/EOModel/test00.m
===================================================================
--- gdl2/EOModel/test00.m    (revision 40495)
+++ gdl2/EOModel/test00.m    (working copy)
@@ -243,7 +243,7 @@
 
     plist = [NSMutableDictionary dictionary];
     [model encodeTableOfContentsIntoPropertyList: plist];
-    START_SET("-[EOModel encodeTableOfContentsIntoPropertyList:]"
+    START_SET("-[EOModel encodeTableOfContentsIntoPropertyList:]");
     {
       BOOL local;
       result = NO;
Index: gdl2/EOModel/test01.m
===================================================================
--- gdl2/EOModel/test01.m    (revision 40495)
+++ gdl2/EOModel/test01.m    (working copy)
@@ -62,7 +62,7 @@
       END_TEST(result, "%s -validateName: with invalid name '(nil)",
className);
       END_SET("-validateName with invalid names");
     
-      START_SET("%s -setName: with valid names", className);
+      START_SET("-setName: with valid names");
       for (i = 0; i < [validNames count]; i++)
     {
       NSString *aName = [validNames objectAtIndex:i];
@@ -78,9 +78,9 @@
       END_TEST(result, "%s -setName: with valid name '%s'", className,
                                 [aName cString]);
         }
-      END_SET("%s -setName: with valid names", className);
+      END_SET("-setName: with valid names");
 
-      START_SET("%s -setName: with invalid names", className);
+      START_SET("-setName: with invalid names");
       for (i = 0; i < [invalidNames count]; i++)
     {
       NSString *aName = [invalidNames objectAtIndex:i];
@@ -95,7 +95,7 @@
      
       END_TEST(result, "%s -setName: with invalid name '%s'",
className, [aName cString]);
     }
-      END_SET("%s -setName: with invalid names", className);
+      END_SET("-setName: with invalid names");
      
     }
    
Index: gdl2/EOQualifier/EOKeyComparisonQualifier00.m
===================================================================
--- gdl2/EOQualifier/EOKeyComparisonQualifier00.m    (revision 40495)
+++ gdl2/EOQualifier/EOKeyComparisonQualifier00.m    (working copy)
@@ -43,7 +43,7 @@
                       EOQualifierOperatorGreaterThan
                     rightKey: @"distributed"];
   result = [[qual leftKey] isEqual: @"invented"];
-  result = result && sel_eq([qual selector],
+  result = result && sel_isEqual([qual selector],
                 EOQualifierOperatorGreaterThan);
   result = result && [[qual rightKey] isEqual: @"distributed"];
   END_TEST(result,
Index: gdl2/EOQualifier/EOKeyValueQualifier00.m
===================================================================
--- gdl2/EOQualifier/EOKeyValueQualifier00.m    (revision 40495)
+++ gdl2/EOQualifier/EOKeyValueQualifier00.m    (working copy)
@@ -42,7 +42,7 @@
                     EOQualifierOperatorGreaterThan
                       value: @"PostgresSQL"];
   result = [[qual key] isEqual: @"name"];
-  result = result && sel_eq([qual selector],
EOQualifierOperatorGreaterThan);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorGreaterThan);
   result = result && [[qual value] isEqual: @"PostgresSQL"];
   END_TEST(result,
        "-[EOKeyValueQualifier initWithKey:operatorSelector:value:]");
Index: gdl2/EOQualifier/EOQualifier00.m
===================================================================
--- gdl2/EOQualifier/EOQualifier00.m    (revision 40495)
+++ gdl2/EOQualifier/EOQualifier00.m    (working copy)
@@ -57,28 +57,28 @@
   END_TEST(result, "+[EOQualifier relationalQualifierOperators]");
 
   START_TEST(YES);
-  result = sel_eq([qCls operatorSelectorForString: @"="],
+  result = sel_isEqual([qCls operatorSelectorForString: @"="],
           EOQualifierOperatorEqual);
-  result = result && sel_eq([qCls operatorSelectorForString: @"=="],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"=="],
                 EOQualifierOperatorEqual);
-  result = result && sel_eq([qCls operatorSelectorForString: @"!="],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"!="],
                 EOQualifierOperatorNotEqual);
-  result = result && sel_eq([qCls operatorSelectorForString: @"<>"],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"<>"],
                 EOQualifierOperatorNotEqual);
-  result = result && sel_eq([qCls operatorSelectorForString: @"<"],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"<"],
                 EOQualifierOperatorLessThan);
-  result = result && sel_eq([qCls operatorSelectorForString: @">"],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @">"],
                 EOQualifierOperatorGreaterThan);
-  result = result && sel_eq([qCls operatorSelectorForString: @"<="],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"<="],
                 EOQualifierOperatorLessThanOrEqualTo);
-  result = result && sel_eq([qCls operatorSelectorForString: @">="],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @">="],
                 EOQualifierOperatorGreaterThanOrEqualTo);
-  result = result && sel_eq([qCls operatorSelectorForString: @"like"],
+  result = result && sel_isEqual([qCls operatorSelectorForString: @"like"],
                 EOQualifierOperatorLike);
-  result = result && sel_eq([qCls operatorSelectorForString:
+  result = result && sel_isEqual([qCls operatorSelectorForString:
                     @"caseInsensitiveLike"],
                 EOQualifierOperatorCaseInsensitiveLike);
-  result = result && sel_eq([qCls operatorSelectorForString:
@"doesContain"],
+  result = result && sel_isEqual([qCls operatorSelectorForString:
@"doesContain"],
                 EOQualifierOperatorContains);
   END_TEST(result, "+[EOQualifier operatorSelectorForString:]");
 
@@ -124,7 +124,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: @"constant"];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = 'constant''");
 
@@ -133,7 +133,7 @@
   result = [qual isKindOfClass: [EOKeyComparisonQualifier class]];
   result = result && [[qual leftKey] isEqual: @"key"];
   result = result && [[qual rightKey] isEqual: @"value"];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = value'");
 
@@ -142,7 +142,7 @@
   result = [qual isKindOfClass: [EOKeyComparisonQualifier class]];
   result = result && [[qual leftKey] isEqual: @"key"];
   result = result && [[qual rightKey] isEqual: @"value"];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'(key = value)'");
 
@@ -151,7 +151,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: [NSNumber numberWithInt: 25]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = 25'");
 
@@ -160,7 +160,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: [NSNumber numberWithInt: -25]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = -25'");
 
@@ -169,7 +169,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: [NSNumber numberWithDouble:
-12.8]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = -12.8'");
 
@@ -178,7 +178,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: [NSNumber numberWithInt: 25]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = (NSNumber)'25''");
 
@@ -187,7 +187,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: [NSNumber numberWithFloat:
25.5]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = (NSNumber)'25.5''");
 
@@ -197,7 +197,7 @@
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value]
                isEqual: [NSNumber numberWithDouble: 42.94967296]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = (NSNumber)'42.94967296''");
 
@@ -207,7 +207,7 @@
   result = [qual isKindOfClass: [EOKeyValueQualifier class]];
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual: tmp];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "@'key = (NSDecimalNumber)'25.1''");
 
Index: gdl2/EOQualifier/EOQualifier02.m
===================================================================
--- gdl2/EOQualifier/EOQualifier02.m    (revision 40495)
+++ gdl2/EOQualifier/EOQualifier02.m    (working copy)
@@ -51,7 +51,7 @@
   result = result && [[qual key] isEqual: @"key"];
   result = result && [[qual value] isEqual:
                      [@"\"const\\U00C0\\U038F\\U4E20\"" propertyList]];
-  result = result && sel_eq([qual selector], EOQualifierOperatorEqual);
+  result = result && sel_isEqual([qual selector],
EOQualifierOperatorEqual);
   END_TEST(result, "+[EOQualifier qualifierWithQualifierFormat:] "
        "Unicode: @'key = 'const$$$''");
 
Index: gdl2/EOSharedEditingContext/EOSharedEditingContext01.m
===================================================================
--- gdl2/EOSharedEditingContext/EOSharedEditingContext01.m    (revision
40495)
+++ gdl2/EOSharedEditingContext/EOSharedEditingContext01.m    (working copy)
@@ -77,13 +77,13 @@
   END_TEST(result, "-[EOSharedEditingContext
objectsWithFetchSpecification:editingContext:]");
 
   obj = [tmp lastObject];
-  TEST_EXCEPTION([obj takeValue: @"Software" forKey: @"name"];,
-         NSInternalInconsistencyException, YES,
-         "object in EOSharedEditingContext may not be altered");
+  // TEST_EXCEPTION([obj takeValue: @"Software" forKey: @"name"];,
+  //          NSInternalInconsistencyException, YES,
+  //          "object in EOSharedEditingContext may not be altered");
 
-  TEST_EXCEPTION([sec deleteObject: obj];,
-         NSInternalInconsistencyException, YES,
-         "object in EOSharedEditingContext may not be deleted");
+  // TEST_EXCEPTION([sec deleteObject: obj];,
+  //          NSInternalInconsistencyException, YES,
+  //          "object in EOSharedEditingContext may not be deleted");
 
   START_TEST(YES);
   tmp = [ec1 objectsWithFetchSpecification: fs editingContext: ec1];
Index: gdl2/EOSortOrdering/EOSortOrdering00.m
===================================================================
--- gdl2/EOSortOrdering/EOSortOrdering00.m    (revision 40495)
+++ gdl2/EOSortOrdering/EOSortOrdering00.m    (working copy)
@@ -55,19 +55,19 @@
                   selector: EOCompareDescending];
 
   result = [[sOrd1 key] isEqual: @"name"];
-  result = result && sel_eq([sOrd1 selector],
+  result = result && sel_isEqual([sOrd1 selector],
                 EOCompareCaseInsensitiveAscending);
 
   result = result && [[sOrd2 key] isEqual: @"details"];
-  result = result && sel_eq([sOrd2 selector],
+  result = result && sel_isEqual([sOrd2 selector],
                 EOCompareCaseInsensitiveDescending);
 
   result = result && [[sOrd3 key] isEqual: @"number"];
-  result = result && sel_eq([sOrd3 selector],
+  result = result && sel_isEqual([sOrd3 selector],
                 EOCompareAscending);
 
   result = result && [[sOrd4 key] isEqual: @"date"];
-  result = result && sel_eq([sOrd4 selector],
+  result = result && sel_isEqual([sOrd4 selector],
                 EOCompareDescending);
 
   END_TEST(result, "-[EOSortOrdering initWithKey:selector:]");
Index: gdl2/GDL2Testing.h
===================================================================
--- gdl2/GDL2Testing.h    (revision 40495)
+++ gdl2/GDL2Testing.h    (working copy)
@@ -3,7 +3,7 @@
 #ifdef GNUSTEP_TESTING
 #include <GNUstepBase/GSTesting.h>
 #else
-#include "../ObjectTesting.h"
+#include "ObjectTesting.h"
 #endif
 
 #include <Foundation/Foundation.h>
Index: gdl2/GNUmakefile.super
===================================================================
--- gdl2/GNUmakefile.super    (revision 40495)
+++ gdl2/GNUmakefile.super    (working copy)
@@ -1,3 +1,3 @@
 include $(GNUSTEP_MAKEFILES)/Auxiliary/gdl2.make
-ADDITIONAL_NATIVE_LIBS+=EOControl EOAccess
-ADDITIONAL_NATIVE_LIB_DIRS+=EOControl EOAccess
+ADDITIONAL_NATIVE_LIBS+=EOAccess EOControl
+ADDITIONAL_NATIVE_LIB_DIRS+=EOAccess EOControl



On 04/28/2017 01:00 PM, Matt Rice wrote:
> On Fri, Apr 28, 2017 at 2:21 AM, Mark Clements <mark.clements@ki.se> wrote:
>> I am new to Objective C and GNUstep - and interested in GDL2.
>>
>> Using https://github.com/gnustep/gdl2 and gcc 4.8.4, I have been working 
>> with the Trading example with PostgreSQL and ran into a bug:
>>
>> Examples/Trading/obj/createTradingDB: Uncaught exception 
>> PostgreSQLException, reason: SQL expression 'CREATE TABLE TST_CUSTOMER 
>> (GRPID (null), NAME (null)(30) NOT NULL, PID (null) NOT NULL)' caused ERROR: 
>>  syntax error at or near "("
>> LINE 1: CREATE TABLE TST_CUSTOMER (GRPID (null), NAME (null)(30) NOT...
>>                                          ^
>> In looking for a bug fix, I was - and am - confused by how prototypes are 
>> used in EOAttribute.m. The documentation and comments suggest that the 
>> getters use _prototype, but this is not implemented in code. Moreover, does 
>> -(void)_updateFromPrototype actually update the values in the EOAttribute 
>> class? The following patch seems to work for this example - but is it 
>> correct?
> Hi Mark,
>
> It has been a fairly long time since i've much looked at the GDL2 code base,
> So i am probably not going to be of much help, in the correctness
> however _updateFromPrototype does at least _attempt_ to update the values.
>
> EOAttribute.m:2281 [self takeValuesFromDictionary:notOverridenKV];
>
> This should result in the various -[EOAttribute set*:]  methods being
> called (eventually after routing through the Key Value Coding
> mechanism.
>
> It however wouldn't surprise me if this were broken, GDL2 was somewhat
> reliant on an older version of KVC, and there has been various API
> churn in this regard that came from Apple...
>
>> As a second question: what is a canonical approach for running 
>> createTradingDB without make install? The incantation I have been using is:
>>
>> TEST_ADAPTOR=PostgreSQL 
>> LD_LIBRARY_PATH=EOAccess/obj:EOControl/obj:Examples/Trading/obj:$LD_LIBRARY_PATH
>>  Examples/Trading/obj/createTradingDB --GNU-Debug=gsdb
>>
>> Kindly, Mark.
> This in particular is a very hairy subject, due to GDL2's reliance on
> bundle loading etc,
> Do you have the GDL2 adaptors installed in the framework in gnusteps
> root somewhere? (Otherwise I would be surprised if this worked due to
> the way adaptors are located),
>
> If so, take care to check if you are using GDL2 libraries from one
> compile, (in the local directory via LD_LIBRARY_PATH), and adaptors
> from another (In the frameworks/ directory)
>
> I would recommend putting the glibc (assuming glibc?) LD_DEBUG="files"
> environment variable, to check and make sure that you are not mixing
> libraries from various compiles
>
> IMO this is quite unfortunate,
>
> There is also this repository here containing the testsuite.
>
> http://svn.gna.org/viewcvs/gnustep/tests/testsuite/trunk/gdl2/
>
> Overall, i'm not sure about the patch (It sounds like this should be
> happening in the takeValue* call discussed above, rather than the
> getter, and that something has gone awry there).
>
> Hope this helps.
>
>
>
>> diff --git a/EOAccess/EOAttribute.m b/EOAccess/EOAttribute.m
>> index df9b36e..58255ea 100644
>> --- a/EOAccess/EOAttribute.m
>> +++ b/EOAccess/EOAttribute.m
>> @@ -511,17 +511,29 @@ static NSArray* staticPrototypeKeys=nil;
>>   */
>>  - (int)scale
>>  {
>> -  return _scale;
>> +  if (_scale>0)
>> +    return _scale;
>> +  else if (_prototype && [_prototype scale])
>> +    return [_prototype scale];
>> +  else return 0;
>>  }
>>
>>  - (unsigned)precision
>>  {
>> -  return _precision;
>> +  if (_precision>0)
>> +    return _precision;
>> +  else if (_prototype && [_prototype precision])
>> +    return [_prototype precision];
>> +  else return 0;
>>  }
>>
>>  - (unsigned)width
>>  {
>> -  return _width;
>> +  if (_width>0)
>> +    return _width;
>> +  else if (_prototype && [_prototype width])
>> +    return [_prototype width];
>> +  else return 0;
>>  }
>>
>>  - (id)parent
>> @@ -636,6 +648,8 @@ static NSArray* staticPrototypeKeys=nil;
>>      return _valueClassName;
>>    else if ([self isFlattened])
>>      return [[_definitionArray realAttribute] valueClassName];
>> +  else if (_prototype && [_prototype valueClassName])
>> +    return [_prototype valueClassName];
>>    else
>>      return nil;
>>  }
>> @@ -656,6 +670,8 @@ static NSArray* staticPrototypeKeys=nil;
>>      return _externalType;
>>    else if ([self isFlattened])
>>      return [[_definitionArray realAttribute] externalType];
>> +  else if (_prototype && [_prototype externalType])
>> +    return [_prototype externalType];
>>    else
>>      return nil;
>>  }
>>
>>
>> _______________________________________________
>> Discuss-gnustep mailing list
>> Discuss-gnustep@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep




reply via email to

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