int RGWRados::prepare_atomic_for_write(RGWRadosCtx *rctx, rgw_obj& obj, librados::IoCtx& io_ctx,
string& actual_obj, ObjectWriteOperation& op, RGWObjState **pstate)
{
- if (!rctx)
+ if (!rctx) {
+ *pstate = NULL;
return 0;
+ }
int r;
do {
int r;
do {
r = clone_objs_impl(ctx, dst_obj, ranges, attrs, category, pmtime, truncate_dest, xattr_cond);
- } while (r == -ECANCELED);
+ } while (ctx && r == -ECANCELED);
return r;
}
string& actual_obj, librados::ObjectWriteOperation& op, RGWObjState **pstate);
void atomic_write_finish(RGWObjState *state, int r) {
- if (r == -ECANCELED) {
+ if (state && r == -ECANCELED) {
state->clear();
}
}