Changeset 2497

Show
Ignore:
Timestamp:
08/28/07 16:24:31 (1 year ago)
Author:
dgollub
Message:

Set a empty OSyncData object for OSyncChange if a _deleted_ change with
changetype DELETED got send. This fixes several asserts in different
places.

I didn't removed all the asserts because it's a path full of asserts
until the marshal/demarshal funciton.

TODO: Get rid of does dummy OSyncData object if the changetype is
_deleted_ - fix the marshal/demarshal fucntion and test this.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/kdepim/src/datasource.cpp

    r2293 r2497  
    181181} 
    182182 
    183 bool OSyncDataSource::report_deleted(OSyncPluginInfo *info, OSyncContext *ctx
    184 { 
    185         osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx); 
     183bool OSyncDataSource::report_deleted(OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat
     184{ 
     185        osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __PRETTY_FUNCTION__, info, ctx, objformat); 
    186186         
    187187        int i; 
     
    194194                 
    195195                change = osync_change_new(&error); 
    196                 if (!change) { 
    197                         for (; uids[i]; i++) 
    198                                 g_free(uids[i]); 
    199                         g_free(uids); 
    200                         osync_context_report_osyncerror(ctx, error); 
    201                         osync_trace(TRACE_EXIT_ERROR, "%s: %s", __PRETTY_FUNCTION__, osync_error_print(&error)); 
    202                         osync_error_unref(&error); 
    203                         return false; 
    204                 } 
     196                if (!change) 
     197                        goto error; 
    205198 
    206199                osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_DELETED); 
    207200                osync_change_set_uid(change, uids[i]); 
     201 
     202                OSyncData *data = osync_data_new(NULL, 0, objformat, &error);  
     203                if (!data) 
     204                        goto error_free_change; 
     205 
     206                osync_data_set_objtype(data, osync_objtype_sink_get_name(sink)); 
     207                osync_change_set_data(change, data); 
     208 
    208209                osync_context_report_change(ctx, change); 
    209210                osync_hashtable_update_hash(hashtable, OSYNC_CHANGE_TYPE_DELETED, uids[i], NULL); 
     
    215216        osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__); 
    216217        return true; 
     218 
     219error_free_change:       
     220        osync_change_unref(change); 
     221error:   
     222        for (; uids[i]; i++) 
     223                g_free(uids[i]); 
     224        g_free(uids); 
     225        osync_context_report_osyncerror(ctx, error); 
     226        osync_trace(TRACE_EXIT_ERROR, "%s: %s", __PRETTY_FUNCTION__, osync_error_print(&error)); 
     227        osync_error_unref(&error); 
     228        return false; 
    217229} 
    218230 
  • plugins/kdepim/src/datasource.h

    r2293 r2497  
    1414                /* utility functions for subclasses */ 
    1515                bool report_change(OSyncPluginInfo *info, OSyncContext *ctx, QString uid, QString data, QString hash, OSyncObjFormat *objformat); 
    16                 bool report_deleted(OSyncPluginInfo *info, OSyncContext *ctx); 
     16                bool report_deleted(OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat); 
    1717 
    1818        public: 
  • plugins/kdepim/src/kaddrbook.cpp

    r2384 r2497  
    148148        } 
    149149 
    150         if (!report_deleted(info, ctx)) { 
     150        if (!report_deleted(info, ctx, objformat)) { 
    151151                osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__); 
    152152                return; 
  • plugins/kdepim/src/kcal.cpp

    r2384 r2497  
    294294        OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 
    295295 
     296        OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); 
     297        OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vevent20"); 
     298 
    296299        if (osync_objtype_sink_get_slowsync(sink)) { 
    297300                osync_trace(TRACE_INTERNAL, "Got slow-sync"); 
     
    304307        } 
    305308 
    306         if (!report_deleted(info, ctx)) { 
     309        if (!report_deleted(info, ctx, objformat)) { 
    307310                osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__); 
    308311                return; 
     
    318321 
    319322        OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 
     323 
     324        OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); 
     325        OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vtodo20"); 
    320326 
    321327        if (osync_objtype_sink_get_slowsync(sink)) { 
     
    329335        } 
    330336 
    331         if (!report_deleted(info, ctx)) { 
     337        if (!report_deleted(info, ctx, objformat)) { 
    332338                osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__); 
    333339                return; 
  • plugins/kdepim/src/knotes.cpp

    r2327 r2497  
    242242        } 
    243243 
    244         if (!report_deleted(info, ctx)) { 
     244        if (!report_deleted(info, ctx, objformat)) { 
    245245                osync_trace(TRACE_EXIT_ERROR, "%s", __func__); 
    246246                return;