fix the bug that mem_leak happen when failed open
This commit is contained in:
12
deps/oblib/src/lib/restore/ob_object_device.cpp
vendored
12
deps/oblib/src/lib/restore/ob_object_device.cpp
vendored
@ -167,6 +167,10 @@ int ObObjectDevice::open_for_reader(const char *pathname, void*& ctx)
|
|||||||
ctx = (void*)reader;
|
ctx = (void*)reader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret) && OB_NOT_NULL(reader)) {
|
||||||
|
reader_ctx_pool_.free(reader);
|
||||||
|
reader = nullptr;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,6 +190,10 @@ int ObObjectDevice::open_for_overwriter(const char *pathname, void*& ctx)
|
|||||||
ctx = (void*)overwriter;
|
ctx = (void*)overwriter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret) && OB_NOT_NULL(overwriter)) {
|
||||||
|
overwriter_ctx_pool_.free(overwriter);
|
||||||
|
overwriter = nullptr;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,6 +260,10 @@ int ObObjectDevice::open_for_appender(const char *pathname, ObIODOpts *opts, voi
|
|||||||
ctx = appender;
|
ctx = appender;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret) && OB_NOT_NULL(appender)) {
|
||||||
|
appender_ctx_pool_.free(appender);
|
||||||
|
appender = nullptr;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user