* around. that way, we can honor locks created by the same process
* with the same file. */
-#define adf_lock_init(a) \
- do { \
- (a)->adf_lockmax = (a)->adf_lockcount = 0; \
- (a)->adf_excl = 0;(a)->adf_lock = NULL; \
+#define adf_lock_init(a) do { \
+ (a)->adf_lockmax = 0; \
+ (a)->adf_lockcount = 0; \
+ (a)->adf_lock = NULL; \
} while (0)
-#define adf_lock_free(a) \
- do { \
+#define adf_lock_free(a) do { \
int i; \
- if ((a)->adf_lock != NULL) { \
- for (i = 0; i < (a)->adf_lockcount; i++) { \
- adf_lock_t *lock = (a)->adf_lock + i; \
- if (--(*lock->refcount) < 1) \
- free(lock->refcount); \
- } \
- free((a)->adf_lock); \
- adf_lock_init(a); \
+ if (!(a)->adf_lock) \
+ break; \
+ for (i = 0; i < (a)->adf_lockcount; i++) { \
+ adf_lock_t *lock = (a)->adf_lock + i; \
+ if (--(*lock->refcount) < 1) \
+ free(lock->refcount); \
} \
+ free((a)->adf_lock); \
+ adf_lock_init(a); \
} while (0)
#endif /* libatalk/adouble/ad_private.h */