-
Notifications
You must be signed in to change notification settings - Fork 280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build fixes for clang 18.1.8 #359
base: master
Are you sure you want to change the base?
Conversation
Fix various type differences (BOOL vs. BOOL* etc.) that cause compile failures with clang 18.1.8
@@ -89,7 +89,7 @@ + (SOGoUserDefaults *) defaultsForUser: (NSString *) userId | |||
[ud setObject: @"text" forKey: @"SOGoMailComposeMessageType"]; | |||
} | |||
|
|||
[ud setObject: [NSNumber numberWithUnsignedLongLong: [up getCDefaultsSize]] forKey: @"CDefaultsSize"]; // Add c_defaults field size | |||
[ud setObject: [NSNumber numberWithUnsignedLongLong: (unsigned long long)[up getCDefaultsSize]] forKey: @"CDefaultsSize"]; // Add c_defaults field size |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure this cause a build falied? as this method is already defined as
- (unsigned long long)getCDefaultsSize;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Without this, I get
Compiling file SOGoUserDefaults.m ...
SOGoUserDefaults.m:92:60: warning: instance method '-getCDefaultsSize' not found (return type defaults to 'id') [-Wobjc-method-access]
92 | [ud setObject: [NSNumber numberWithUnsignedLongLong: [up getCDefaultsSize]] forKey: @"CDefaultsSize"]; // Add c_defaults field size
| ^~~~~~~~~~~~~~~~
./SOGoUserProfile.h:44:12: note: receiver is instance of class declared here
44 | @interface SOGoUserProfile : NSObject
| ^
SOGoUserDefaults.m:92:56: error: incompatible pointer to integer conversion sending 'id' to parameter of type 'unsigned long long' [-Wint-conversion]
92 | [ud setObject: [NSNumber numberWithUnsignedLongLong: [up getCDefaultsSize]] forKey: @"CDefaultsSize"]; // Add c_defaults field size
| ^~~~~~~~~~~~~~~~~~~~~
/usr/include/Foundation/NSValue.h:205:63: note: passing argument to parameter 'value' here
205 | + (NSNumber*) numberWithUnsignedLongLong: (unsigned long long)value;
| ^
1 warning and 1 error generated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you check that the two modifs in comments indeed cause a build failure?
@@ -104,10 +104,11 @@ static NSComparisonResult _compareFetchResultsByMODSEQ (id entry1, id entry2, vo | |||
return [modseq1 compare: modseq2]; | |||
} | |||
|
|||
static NSInteger _compareFetchResultsByUID (id entry1, id entry2, NSDictionary *uids) | |||
static NSComparisonResult _compareFetchResultsByUID (id entry1, id entry2, void *uidsp) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure to understand the utility the void* then the NSDictionnary* casting? Can you check again if this causes a fail?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Without this:
SOGoMailFolder.m:233:52: error: incompatible function pointer types sending 'NSInteger (id, id, NSDictionary *)' (aka 'long (id, id, NSDictionary *)') to parameter of type 'NSComparisonResult (*)(id, id, void *)' (aka 'enum NSComparisonResult (*)(id, id, void *)') [-Wincompatible-function-pointer-types]
233 | result = [fetchResults sortedArrayUsingFunction: _compareFetchResultsByUID
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/Foundation/NSArray.h:145:44: note: passing argument to parameter 'comparator' here
145 | (NSComparisonResult (*)(id, id, void*))comparator
| ^
@berolinux Hello, I've actually need to push the corrections on the (BOOL *) -> (BOOL). Could you make the adjustements on your PR? Or I can make a commit myself and credit you if you don't have the time. |
e4c98fd
to
2258d5c
Compare
Fix various type differences (BOOL vs. BOOL* etc.) that cause compile failures with clang 18.1.8
https://bugs.sogo.nu/view.php?id=5997