@@ -12240,28 +12240,32 @@ __cold int mdbx_env_delete(const char *pathname, MDBX_env_delete_mode_t mode) {
12240
12240
break;
12241
12241
}
12242
12242
12243
- MDBX_env dummy_env;
12244
- memset(&dummy_env, 0, sizeof(dummy_env));
12245
- dummy_env.me_flags =
12243
+ #ifdef __e2k__ /* https://bugs.mcst.ru/bugzilla/show_bug.cgi?id=6011 */
12244
+ MDBX_env *const dummy_env = alloca(sizeof(MDBX_env));
12245
+ #else
12246
+ MDBX_env dummy_env_silo, *const dummy_env = &dummy_env_silo;
12247
+ #endif
12248
+ memset(dummy_env, 0, sizeof(*dummy_env));
12249
+ dummy_env->me_flags =
12246
12250
(mode == MDBX_ENV_ENSURE_UNUSED) ? MDBX_EXCLUSIVE : MDBX_ENV_DEFAULTS;
12247
- dummy_env. me_os_psize = (unsigned)mdbx_syspagesize();
12248
- dummy_env. me_psize = (unsigned)mdbx_default_pagesize();
12249
- dummy_env. me_pathname = (char *)pathname;
12251
+ dummy_env-> me_os_psize = (unsigned)mdbx_syspagesize();
12252
+ dummy_env-> me_psize = (unsigned)mdbx_default_pagesize();
12253
+ dummy_env-> me_pathname = (char *)pathname;
12250
12254
12251
12255
MDBX_handle_env_pathname env_pathname;
12252
- STATIC_ASSERT(sizeof(dummy_env. me_flags) == sizeof(MDBX_env_flags_t));
12256
+ STATIC_ASSERT(sizeof(dummy_env-> me_flags) == sizeof(MDBX_env_flags_t));
12253
12257
int rc = MDBX_RESULT_TRUE,
12254
12258
err = mdbx_handle_env_pathname(
12255
- &env_pathname, pathname, (MDBX_env_flags_t *)&dummy_env. me_flags, 0);
12259
+ &env_pathname, pathname, (MDBX_env_flags_t *)&dummy_env-> me_flags, 0);
12256
12260
if (likely(err == MDBX_SUCCESS)) {
12257
12261
mdbx_filehandle_t clk_handle = INVALID_HANDLE_VALUE,
12258
12262
dxb_handle = INVALID_HANDLE_VALUE;
12259
12263
if (mode > MDBX_ENV_JUST_DELETE) {
12260
- err = mdbx_openfile(MDBX_OPEN_DELETE, & dummy_env, env_pathname.dxb,
12264
+ err = mdbx_openfile(MDBX_OPEN_DELETE, dummy_env, env_pathname.dxb,
12261
12265
&dxb_handle, 0);
12262
12266
err = (err == MDBX_ENOFILE) ? MDBX_SUCCESS : err;
12263
12267
if (err == MDBX_SUCCESS) {
12264
- err = mdbx_openfile(MDBX_OPEN_DELETE, & dummy_env, env_pathname.lck,
12268
+ err = mdbx_openfile(MDBX_OPEN_DELETE, dummy_env, env_pathname.lck,
12265
12269
&clk_handle, 0);
12266
12270
err = (err == MDBX_ENOFILE) ? MDBX_SUCCESS : err;
12267
12271
}
@@ -12287,7 +12291,7 @@ __cold int mdbx_env_delete(const char *pathname, MDBX_env_delete_mode_t mode) {
12287
12291
err = MDBX_SUCCESS;
12288
12292
}
12289
12293
12290
- if (err == MDBX_SUCCESS && !(dummy_env. me_flags & MDBX_NOSUBDIR)) {
12294
+ if (err == MDBX_SUCCESS && !(dummy_env-> me_flags & MDBX_NOSUBDIR)) {
12291
12295
err = mdbx_removedirectory(pathname);
12292
12296
if (err == MDBX_SUCCESS)
12293
12297
rc = MDBX_SUCCESS;
0 commit comments