CaptiveFileParentObject *captive_file_parent_object;
GnomeVFSResult r;
gint retried=0;
+gint retried_commit=0;
g_return_val_if_fail(CAPTIVE_FILE_PARENT_IS_OBJECT(captive_file_object),GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(buffer!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
if (GNOME_VFS_OK!=(r=captive_parent_connector_open(CAPTIVE_PARENT_CONNECTOR(captive_file_parent_object))))
return r;
if (GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE
- !=(r=captive_sandbox_parent_file_read(captive_file_parent_object,buffer,num_bytes,bytes_read_return)))
+ !=(r=captive_sandbox_parent_file_read(captive_file_parent_object,buffer,num_bytes,bytes_read_return))) {
+ if (GNOME_VFS_ERROR_SERVICE_OBSOLETE==r) {
+ if (!retried_commit++) {
+ if (GNOME_VFS_OK!=(r=captive_vfs_commit(captive_file_object->vfs)))
+ return r;
+ retried=0;
+ continue;
+ }
+ }
return r;
+ }
} while (!retried++);
return r;
}