[vlc-commits] [Git][videolan/vlc][master] 2 commits: macosx: guard Quick Look thumbnail generation against invalid file URLs

Steve Lhomme (@robUx4) gitlab at videolan.org
Tue Sep 1 07:49:48 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
7e95ee7b by Serhii Bykov at 2026-09-01T07:39:42+00:00
macosx: guard Quick Look thumbnail generation against invalid file URLs

- - - - -
06d94e3d by Serhii Bykov at 2026-09-01T07:39:42+00:00
macosx: normalize dropped file URLs before queue insertion

- - - - -


2 changed files:

- modules/gui/macosx/extensions/NSImage+VLCAdditions.m
- modules/gui/macosx/views/VLCFileDragRecognisingView.m


Changes:

=====================================
modules/gui/macosx/extensions/NSImage+VLCAdditions.m
=====================================
@@ -265,6 +265,11 @@ static NSImage *ImageFromEmoji(NSString *emoji, NSSize size)
                             withSize:(NSSize)size
                    completionHandler:(void (^)(NSImage *))completionHandler
 {
+    if (path.length == 0) {
+        completionHandler(nil);
+        return;
+    }
+
     NSURL * const pathUrl = [NSURL fileURLWithPath:path];
     [self quickLookPreviewForLocalURL:pathUrl withSize:size completionHandler:completionHandler];
 }
@@ -273,6 +278,11 @@ static NSImage *ImageFromEmoji(NSString *emoji, NSSize size)
                            withSize:(NSSize)size 
                   completionHandler:(void (^)(NSImage *))completionHandler
 {
+    if (url == nil || !url.isFileURL) {
+        completionHandler(nil);
+        return;
+    }
+
     if (@available(macOS 10.15, *)) {
         const QLThumbnailGenerationRequestRepresentationTypes type = 
             QLThumbnailGenerationRequestRepresentationTypeAll;
@@ -304,12 +314,20 @@ static NSImage *ImageFromEmoji(NSString *emoji, NSSize size)
 
 + (instancetype)quickLookPreviewForLocalPath:(NSString *)path withSize:(NSSize)size
 {
+    if (path.length == 0) {
+        return nil;
+    }
+
     NSURL *pathUrl = [NSURL fileURLWithPath:path];
     return [self quickLookPreviewForLocalURL:pathUrl withSize:size];
 }
 
 + (instancetype)quickLookPreviewForLocalURL:(NSURL *)url withSize:(NSSize)size
 {
+    if (url == nil || !url.isFileURL) {
+        return nil;
+    }
+
     NSDictionary *dict = @{(NSString*)kQLThumbnailOptionIconModeKey : [NSNumber numberWithBool:NO]};
     CFDictionaryRef dictRef = CFBridgingRetain(dict);
     if (dictRef == NULL) {


=====================================
modules/gui/macosx/views/VLCFileDragRecognisingView.m
=====================================
@@ -59,15 +59,32 @@
 
     NSMutableArray<VLCOpenInputMetadata *> * const URLMetadataArray = [NSMutableArray array];
     for (NSPasteboardItem * const pboardItem in pasteboard.pasteboardItems) {
-        NSString * const URLString = [pboardItem stringForType:NSPasteboardTypeURL] ?:
-                                     [pboardItem stringForType:NSPasteboardTypeFileURL] ?:
+        NSString * const URLString = [pboardItem stringForType:NSPasteboardTypeFileURL] ?:
+                                     [pboardItem stringForType:NSPasteboardTypeURL] ?:
                                      [pboardItem stringForType:NSPasteboardTypeString];
         if (URLString.length <= 0) {
             continue;
         }
 
-        VLCOpenInputMetadata * const inputMetadata = [[VLCOpenInputMetadata alloc] init];
-        inputMetadata.MRLString = URLString;
+        NSURL * const droppedURL = [NSURL URLWithString:URLString];
+        VLCOpenInputMetadata *inputMetadata = nil;
+        if (droppedURL.isFileURL) {
+            NSURL * const filePathURL = droppedURL.filePathURL;
+            NSString * const path = filePathURL.path;
+            if (path.length > 0) {
+                inputMetadata = [VLCOpenInputMetadata inputMetaWithPath:path];
+            }
+        } else if (droppedURL != nil && droppedURL.scheme.length > 0) {
+            inputMetadata = [[VLCOpenInputMetadata alloc] init];
+            inputMetadata.MRLString = droppedURL.absoluteString;
+        } else if (URLString.length > 0 && [URLString isAbsolutePath]) {
+            inputMetadata = [VLCOpenInputMetadata inputMetaWithPath:URLString];
+        }
+
+        if (inputMetadata == nil) {
+            continue;
+        }
+
         [URLMetadataArray addObject:inputMetadata];
     }
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/03425fb4761f02cac7f8223bf1d334da2c2ef687...06d94e3d7f232eb18e63f4c6488380f98e207f17

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/03425fb4761f02cac7f8223bf1d334da2c2ef687...06d94e3d7f232eb18e63f4c6488380f98e207f17
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list