2
0
Эх сурвалжийг харах

Cocoa: Fix potential leak of CFNumber object

Spotted by Clang static analysis.

(cherry picked from commit a2674a903434b7dfc0b0bcc5d0b479da417367ff)
Camilla Löwy 5 жил өмнө
parent
commit
b8a6254a26
2 өөрчлөгдсөн 14 нэмэгдсэн , 6 устгасан
  1. 2 0
      README.md
  2. 12 6
      src/cocoa_monitor.m

+ 2 - 0
README.md

@@ -124,6 +124,8 @@ information on what to include when reporting a bug.
  - [Cocoa] Changed `EGLNativeWindowType` from `NSView` to `CALayer` (#1169)
  - [Cocoa] Bugfix: Non-BMP Unicode codepoint input was reported as UTF-16
    (#1635)
+ - [Cocoa] Bugfix: Failing to retrieve the refresh rate of built-in displays
+   could leak memory
  - [X11] Bugfix: IME input of CJK was broken for "C" locale (#1587,#1636)
  - [X11] Bugfix: Xlib errors caused by other parts of the application could be
    reported as GLFW errors

+ 12 - 6
src/cocoa_monitor.m

@@ -277,14 +277,20 @@ static double getFallbackRefreshRate(CGDirectDisplayID displayID)
                                             CFSTR("IOFBCurrentPixelCount"),
                                             kCFAllocatorDefault,
                                             kNilOptions);
-        if (!clockRef || !countRef)
-            break;
 
         uint32_t clock = 0, count = 0;
-        CFNumberGetValue(clockRef, kCFNumberIntType, &clock);
-        CFNumberGetValue(countRef, kCFNumberIntType, &count);
-        CFRelease(clockRef);
-        CFRelease(countRef);
+
+        if (clockRef)
+        {
+            CFNumberGetValue(clockRef, kCFNumberIntType, &clock);
+            CFRelease(clockRef);
+        }
+
+        if (countRef)
+        {
+            CFNumberGetValue(countRef, kCFNumberIntType, &count);
+            CFRelease(countRef);
+        }
 
         if (clock > 0 && count > 0)
             refreshRate = clock / (double) count;