[PD-dev] can't get sys_getpreference to work on MacOS

Dan Wilcox danomatika at gmail.com
Wed May 27 13:57:08 CEST 2020


This is fixed by using CFStringGetCString() instead of CFStringGetCStringPtr().

The Apple docs mention that CFStringGetCStringPtr may return NULL even if the string value is valid. It then mentions to use CFStringGetCString as a backup. In this case, we need to have our own copy so it makes sense to simply use CFStringGetCString anyway.

The relevant commit is now in the develop branch:

https://github.com/pure-data/pure-data/pull/1038/commits/241a11fa670f10ed0dc8f389dd026079e1b84d39 <https://github.com/pure-data/pure-data/pull/1038/commits/241a11fa670f10ed0dc8f389dd026079e1b84d39>

> On May 26, 2020, at 3:08 PM, Dan Wilcox <danomatika at gmail.com> wrote:
> 
>> But meanwhile I can't
>> seem to get Pd to read preferences on a macintosh any more.  This is the
>> first time I've tested using the new preferences interface for Mac, commit
>> cc64c629a (Nov 20 2019, so newer than Pd 0.50-2).
> 
>> It looks like this line:
>> 
>>            const char *s = CFStringGetCStringPtr((CFStringRef)v,
>>                                                  kCFStringEncodingUTF8);
>> 
>> is always returning null.
> 
> 
> It seems that, in certain situations, CFStringGetCStringPtr returns NULL even if the string is valid:
> 
> https://stackoverflow.com/questions/9166291/converting-a-cfstringref-to-char <https://stackoverflow.com/questions/9166291/converting-a-cfstringref-to-char>
> 
> I did not see that in my testing but it could be a different strings settings you are reading as compared to mine and/or slightly different behavior between OS versions.
> 
> I can look into this later tonight.

--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20200527/7374125f/attachment.html>


More information about the Pd-dev mailing list