goto done;
}
#else
- if ((rc = pthread_mutex_init(&my.mc_mutex, NULL)) ||
- (rc = pthread_cond_init(&my.mc_cond, NULL)))
+ if ((rc = pthread_mutex_init(&my.mc_mutex, NULL)) != 0)
return rc;
+ if ((rc = pthread_cond_init(&my.mc_cond, NULL)) != 0)
+ goto done2;
#ifdef HAVE_MEMALIGN
my.mc_wbuf[0] = memalign(env->me_os_psize, MDB_WBUF*2);
if (my.mc_wbuf[0] == NULL) {
goto done;
}
#else
- rc = posix_memalign((void **)&my.mc_wbuf[0], env->me_os_psize, MDB_WBUF*2);
- if (rc)
- goto done;
+ {
+ void *p;
+ if ((rc = posix_memalign(&p, env->me_os_psize, MDB_WBUF*2)) != 0)
+ goto done;
+ my.mc_wbuf[0] = p;
+ }
#endif
#endif
memset(my.mc_wbuf[0], 0, MDB_WBUF*2);
done:
#ifdef _WIN32
+ if (my.mc_wbuf[0]) _aligned_free(my.mc_wbuf[0]);
if (my.mc_cond) CloseHandle(my.mc_cond);
if (my.mc_mutex) CloseHandle(my.mc_mutex);
- _aligned_free(my.mc_wbuf[0]);
#else
+ free(my.mc_wbuf[0]);
pthread_cond_destroy(&my.mc_cond);
+done2:
pthread_mutex_destroy(&my.mc_mutex);
- free(my.mc_wbuf[0]);
#endif
return rc ? rc : my.mc_error;
}