Enlightenment CVS committal

Author  : lordchaos
Project : e17
Module  : proto

Dir     : e17/proto/entropy/src/plugins


Modified Files:
        etk_list_viewer.c filesystem.c 


Log Message:
* Catch a few different types of errors - and don't SEGV :)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_list_viewer.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- etk_list_viewer.c   26 Feb 2006 04:43:03 -0000      1.19
+++ etk_list_viewer.c   26 Feb 2006 05:04:57 -0000      1.20
@@ -354,20 +354,23 @@
        Etk_Tree_Col* col4;
        Etk_Tree_Col* col5;
        
-       col1 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 0);
-       col2 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 1);
-       col3 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 2);
-       col4 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 3);
-       col5 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 4);
+       /*If !obj, it has been deleted - fail silently*/
+       if (obj) {
+               col1 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 0);
+               col2 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 1);
+               col3 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 2);
+               col4 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 3);
+               col5 = etk_tree_nth_col_get(ETK_TREE(viewer->tree), 4);
+               
+               snprintf(buffer,50, "%d Kb", file_stat->stat_obj->st_size / 
1024);
 
-       snprintf(buffer,50, "%d Kb", file_stat->stat_obj->st_size / 1024);
-
-       etk_tree_freeze(ETK_TREE(viewer->tree));
-       etk_tree_row_fields_set((Etk_Tree_Row*)obj->icon, 
+               etk_tree_freeze(ETK_TREE(viewer->tree));
+               etk_tree_row_fields_set((Etk_Tree_Row*)obj->icon, 
                                col3, buffer,
                                col5, ctime(&file_stat->stat_obj->st_mtime),
                                NULL);
-       etk_tree_thaw(ETK_TREE(viewer->tree));
+               etk_tree_thaw(ETK_TREE(viewer->tree));
+       }
      }
      break;                                     
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -r1.45 -r1.46
--- filesystem.c        26 Feb 2006 04:43:03 -0000      1.45
+++ filesystem.c        26 Feb 2006 05:04:57 -0000      1.46
@@ -136,6 +136,7 @@
       entropy_gui_event *gui_event;
       entropy_gui_component_instance *instance;
       entropy_file_stat *file_stat;
+      entropy_file_listener* listener;
 
 
       char *md5;
@@ -169,27 +170,31 @@
       file_stat->stat_obj->st_ctime = data->stat.stat_obj.ist_ctime;
 
       /*Retrieve the file. This is bad - the file might not exist anymore! */
-      file_stat->file = entropy_core_file_cache_retrieve (md5)->file;
+      listener = entropy_core_file_cache_retrieve (md5);
+      if (listener) {
+               file_stat->file = listener->file;
+
+             /*Build up the gui_event wrapper */
+             gui_event = entropy_malloc (sizeof (entropy_gui_event));
+             gui_event->event_type =
+               entropy_core_gui_event_get 
(ENTROPY_GUI_EVENT_FILE_STAT_AVAILABLE);
+             gui_event->data = file_stat;
 
-      /*Build up the gui_event wrapper */
-      gui_event = entropy_malloc (sizeof (entropy_gui_event));
-      gui_event->event_type =
-       entropy_core_gui_event_get (ENTROPY_GUI_EVENT_FILE_STAT_AVAILABLE);
-      gui_event->data = file_stat;
-
-      //printf("File stat at %p\n", file_stat);
-
-      ecore_hash_remove (stat_request_hash, md5);
-      entropy_free (folder);
-      entropy_free (md5);
+             //printf("File stat at %p\n", file_stat);
 
-      /*Call the callback stuff */
-      entropy_core_layout_notify_event (instance, gui_event,
+             /*Call the callback stuff */
+             entropy_core_layout_notify_event (instance, gui_event,
                                        ENTROPY_EVENT_LOCAL);
+      } else {
+             printf("Error! Couldn't fine listener for '%s'\n", 
data->resp_command.file_command.files[0]->path);
+      }
 
       /*Do some freeing */
       entropy_free (file_stat);
       entropy_free (file_stat->stat_obj);
+      ecore_hash_remove (stat_request_hash, md5);
+      entropy_free (folder);
+      entropy_free (md5);
 
       /*No need to free event - notify_event frees it for us */
 




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to