$NetBSD: patch-ac,v 1.1 2007/01/30 16:33:59 joerg Exp $

--- src/gtkam-list.c.orig	2007-01-30 14:54:54.000000000 +0000
+++ src/gtkam-list.c
@@ -984,7 +984,7 @@ gtkam_list_add_folder (GtkamList *list, 
 		       const gchar *folder)
 {
 	GtkWidget *dialog, *s;
-	CameraList flist;
+	CameraList *flist;
 	int result;
 	const char *name;
 	gint i;
@@ -992,9 +992,13 @@ gtkam_list_add_folder (GtkamList *list, 
 
 	g_return_if_fail (GTKAM_IS_LIST (list));
 
+	result = gp_list_new(&flist);
+	if (result < GP_OK)
+		return;
+
 	s = gtkam_status_new (_("Listing files in folder '%s'..."), folder);
 	g_signal_emit (G_OBJECT (list), signals[NEW_STATUS], 0, s);
-	result = gp_camera_folder_list_files (camera->camera, folder, &flist,
+	result = gp_camera_folder_list_files (camera->camera, folder, flist,
 					GTKAM_STATUS (s)->context->context);
 	switch (result) {
 	case GP_OK:
@@ -1002,6 +1006,7 @@ gtkam_list_add_folder (GtkamList *list, 
 	case GP_ERROR_CANCEL:
 		if (camera->multi)
 			gp_camera_exit (camera->camera, NULL);
+		gp_list_free(flist);
 		gtk_object_destroy (GTK_OBJECT (s));
 		return;
 	default:
@@ -1010,20 +1015,23 @@ gtkam_list_add_folder (GtkamList *list, 
 		dialog = gtkam_error_new (result, GTKAM_STATUS (s)->context,
 			NULL, _("Could not get file list for folder "
 			"'%s'"), folder);
+		gp_list_free(flist);
 		gtk_widget_show (dialog);
 		gtk_object_destroy (GTK_OBJECT (s));
 		return;
 	}
 	gtk_object_destroy (GTK_OBJECT (s));
 
-	for (i = 0; i < gp_list_count (&flist); i++) {
-		gp_list_get_name (&flist, i, &name);
+	for (i = 0; i < gp_list_count (flist); i++) {
+		gp_list_get_name (flist, i, &name);
 		gtk_list_store_append (list->priv->store, &iter);
 		gtk_list_store_set (list->priv->store, &iter,
 			NAME_COLUMN, name, FOLDER_COLUMN, folder,
 			CAMERA_COLUMN, camera, IS_EDITABLE_COLUMN, TRUE, -1);
 	}
 
+	gp_list_free(flist);
+
 	if (camera->multi)
 		gp_camera_exit (camera->camera, NULL);
 
