diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 42ef4862a749c29dd99cd0ad7a49f2b611ec10bd..217a035627352d0a5c961a44c2eb62d9fc6a0a65 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -327,8 +327,6 @@ sieve_storage_init(struct sieve_instance *svinst, struct event *storage_event, *event; int ret; - i_assert(storage_class->v.init != NULL); - storage_event = sieve_storage_create_event(svinst, svinst->event); event = sieve_storage_create_driver_event(storage_event, storage_class->driver_name); @@ -350,16 +348,18 @@ sieve_storage_init(struct sieve_instance *svinst, return -1; } - T_BEGIN { - ret = sieve_storage_alloc(svinst, event, storage_class, - data, flags, main, &storage); - i_assert(ret == 0); + ret = sieve_storage_alloc(svinst, event, storage_class, + data, flags, main, &storage); + i_assert(ret == 0); + i_assert(storage != NULL); + i_assert(storage_class->v.init != NULL); - ret = sieve_storage_data_parse(storage, data, - &location, &options); - if (ret < 0) + T_BEGIN { + if (sieve_storage_data_parse(storage, data, + &location, &options) < 0) { *error_code_r = SIEVE_ERROR_TEMP_FAILURE; - else { + ret = -1; + } else { storage->location = p_strdup(storage->pool, location); event_add_str(event, "script_location",