[vlc-devel] [PATCH 2/2] macosx: check type of preference entry before using

Marvin Scholz epirat07 at gmail.com
Wed Mar 4 16:24:38 CET 2020


---
 bin/darwinvlc.m | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/bin/darwinvlc.m b/bin/darwinvlc.m
index fbefc316a6..e8b56a08d1 100644
--- a/bin/darwinvlc.m
+++ b/bin/darwinvlc.m
@@ -226,21 +226,21 @@ int main(int i_argc, const char *ppsz_argv[])
     argv[argc++] = "--no-ignore-config";
     argv[argc++] = "--media-library";
 
-    /* overwrite system language on Mac */
-    char *lang = NULL;
-
-    CFStringRef language;
-    language = (CFStringRef)CFPreferencesCopyAppValue(CFSTR("language"),
-                                                      kCFPreferencesCurrentApplication);
-    if (language) {
-        lang = FromCFString(language, kCFStringEncodingUTF8);
-        if (strncmp( lang, "auto", 4 )) {
-            char tmp[11];
-            snprintf(tmp, 11, "LANG=%s", lang);
-            putenv(tmp);
+    /* Overwrite system language */
+    CFPropertyListRef lang_pref = CFPreferencesCopyAppValue(CFSTR("language"),
+        kCFPreferencesCurrentApplication);
+
+    if (lang_pref) {
+        if (CFGetTypeID(lang_pref) == CFStringGetTypeID()) {
+            char *lang = FromCFString(lang_pref, kCFStringEncodingUTF8);
+            if (strncmp(lang, "auto", 4)) {
+                char tmp[11];
+                snprintf(tmp, 11, "LANG=%s", lang);
+                putenv(tmp);
+            }
+            free(lang);
         }
-        free(lang);
-        CFRelease(language);
+        CFRelease(lang_pref);
     }
 
     ppsz_argv++; i_argc--; /* skip executable path */
-- 
2.21.1 (Apple Git-122.3)



More information about the vlc-devel mailing list