projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
A few attempted bugfixes for log data lifetimes.
[bluesky.git]
/
bluesky
/
cloudlog.c
diff --git
a/bluesky/cloudlog.c
b/bluesky/cloudlog.c
index
c99d181
..
1cae4a5
100644
(file)
--- a/
bluesky/cloudlog.c
+++ b/
bluesky/cloudlog.c
@@
-165,11
+165,15
@@
BlueSkyCloudPointer bluesky_cloudlog_serialize(BlueSkyCloudLog *log,
BlueSkyCloudLog *log2
= (BlueSkyCloudLog *)g_hash_table_lookup(log->fs->locations, &id);
// TODO: refcount
BlueSkyCloudLog *log2
= (BlueSkyCloudLog *)g_hash_table_lookup(log->fs->locations, &id);
// TODO: refcount
- g_mutex_unlock(log->fs->lock);
g_assert(log2 != NULL);
g_assert(log2 != NULL);
+ bluesky_cloudlog_ref(log2);
+ g_mutex_unlock(log->fs->lock);
bluesky_cloudlog_serialize(log2, state);
bluesky_cloudlog_serialize(log2, state);
+ bluesky_cloudlog_unref(log2);
}
}
+ g_mutex_lock(log->lock);
+ bluesky_cloudlog_fetch(log);
g_assert(log->data != NULL);
log->location = state->location;
g_assert(log->data != NULL);
log->location = state->location;
@@
-188,6
+192,7
@@
BlueSkyCloudPointer bluesky_cloudlog_serialize(BlueSkyCloudLog *log,
g_string_append_len(state->data, log->data->data, log->data->len);
log->location_flags |= CLOUDLOG_CLOUD;
g_string_append_len(state->data, log->data->data, log->data->len);
log->location_flags |= CLOUDLOG_CLOUD;
+ g_mutex_unlock(log->lock);
return log->location;
}
return log->location;
}