[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