X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=metadata.cc;fp=metadata.cc;h=a3323a13f4040b9fd3eb5221a66e9a89a578aad8;hb=ca9a4006c4ffc86a24d653d1b1b68bec4a6fbfdf;hp=dac3d20b1aba6d61866d699005516a016f94e446;hpb=fbb042e3bbfe0796b0986fa0ffa9cde75c6e3bce;p=cumulus.git diff --git a/metadata.cc b/metadata.cc index dac3d20..a3323a1 100644 --- a/metadata.cc +++ b/metadata.cc @@ -106,7 +106,6 @@ MetadataWriter::MetadataWriter(TarSegmentStore *store, throw IOException("Error opening statcache"); } - found_match = false; old_metadata_eof = false; this->store = store; @@ -187,18 +186,14 @@ bool MetadataWriter::find(const string& path) while (!old_metadata_eof) { string old_path = uri_decode(old_metadata["name"]); int cmp = pathcmp(old_path.c_str(), path_str); - if (cmp == 0) { - found_match = true; + if (cmp == 0) return true; - } else if (cmp > 0) { - found_match = false; + else if (cmp > 0) return false; - } else { + else read_statcache(); - } } - found_match = false; return false; } @@ -256,11 +251,9 @@ list MetadataWriter::get_blocks() s++; } - ObjectReference *r = ObjectReference::parse(ref); - if (r != NULL) { - blocks.push_back(*r); - delete r; - } + ObjectReference r = ObjectReference::parse(ref); + if (!r.is_null()) + blocks.push_back(r); } return blocks; @@ -350,11 +343,10 @@ void MetadataWriter::add(dictionary info) item.text += encode_dict(info) + "\n"; if (info == old_metadata) { - ObjectReference *ref = ObjectReference::parse(old_metadata_loc); - if (ref != NULL) { + ObjectReference ref = ObjectReference::parse(old_metadata_loc); + if (!ref.is_null()) { item.reused = true; - item.ref = *ref; - delete ref; + item.ref = ref; } }