[rygel] Fix segfault on folder plugin
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: svn-commits-list gnome org
- Subject: [rygel] Fix segfault on folder plugin
- Date: Sun, 3 May 2009 15:15:20 -0400 (EDT)
commit 2000ae8b21f1f251ce0a7621f879135bf9775965
Author: Jens Georg <mail jensge org>
Date: Wed Apr 29 23:55:11 2009 +0200
Fix segfault on folder plugin
---
src/plugins/folder/rygel-folder-media-item.vala | 8 ++++++--
src/plugins/folder/rygel-folder-rootcontainer.vala | 9 ++++++---
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/plugins/folder/rygel-folder-media-item.vala b/src/plugins/folder/rygel-folder-media-item.vala
index f11dddf..1253131 100644
--- a/src/plugins/folder/rygel-folder-media-item.vala
+++ b/src/plugins/folder/rygel-folder-media-item.vala
@@ -21,13 +21,17 @@
using GLib;
using Rygel;
+public errordomain MediaItemError {
+ INVALID_CONTENT_TYPE
+}
+
/**
* Very simple media item.
*/
public class Folder.FilesystemMediaItem : Rygel.MediaItem {
public FilesystemMediaItem(MediaContainer parent,
File file,
- FileInfo file_info) {
+ FileInfo file_info) throws MediaItemError {
string item_class;
var content_type = file_info.get_content_type();
@@ -41,7 +45,7 @@ public class Folder.FilesystemMediaItem : Rygel.MediaItem {
item_class = MediaItem.IMAGE_CLASS;
}
else {
- return;
+ throw new MediaItemError.INVALID_CONTENT_TYPE("content_type %s not supported by plugin".printf(content_type));
}
base(Checksum.compute_for_string(ChecksumType.MD5, file_info.get_name()),
diff --git a/src/plugins/folder/rygel-folder-rootcontainer.vala b/src/plugins/folder/rygel-folder-rootcontainer.vala
index 3a139b8..26f3d03 100644
--- a/src/plugins/folder/rygel-folder-rootcontainer.vala
+++ b/src/plugins/folder/rygel-folder-rootcontainer.vala
@@ -98,9 +98,12 @@ public class Folder.FolderRootContainer : MediaContainer {
if (list != null) {
foreach (FileInfo info in list) {
var file = this.root_dir.get_child(info.get_name());
- var item = new FilesystemMediaItem(this, file, info);
- /*if (item != null)
- items.add(item); */
+ try {
+ var item = new FilesystemMediaItem(this, file, info);
+ items.add(item);
+ } catch (MediaItemError err) {
+ // most likely invalid content type
+ }
}
file_enumerator.next_files_async (MAX_CHILDREN,
Priority.DEFAULT,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]