From: Francesco Chemolli Date: Tue, 11 Feb 2014 09:57:24 +0000 (+0100) Subject: Adapt some callers to std:: API X-Git-Tag: SQUID_3_5_0_1~375^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3aa53107111f11ee33bea72f007af81aa03325b1;p=thirdparty%2Fsquid.git Adapt some callers to std:: API --- diff --git a/include/Stack.h b/include/Stack.h index fe39f6680f..ac1ec17712 100644 --- a/include/Stack.h +++ b/include/Stack.h @@ -48,7 +48,7 @@ public: typedef typename Vector::value_type value_type; typedef typename Vector::pointer pointer; value_type pop() { - if (!count) + if (Vector::empty()) return value_type(); value_type result = items[--count]; @@ -62,6 +62,10 @@ public: value_type top() const { return count ? items[count - 1] : value_type(); } + + void push(S item) { + Vector::push_back(item); + } }; #endif /* SQUID_STACK_H */ diff --git a/lib/MemPoolMalloc.cc b/lib/MemPoolMalloc.cc index bd25ccfe30..bc5d369021 100644 --- a/lib/MemPoolMalloc.cc +++ b/lib/MemPoolMalloc.cc @@ -51,7 +51,11 @@ extern time_t squid_curtime; void * MemPoolMalloc::allocate() { - void *obj = freelist.pop(); + void *obj = NULL; + if (!freelist.empty()) { + obj = freelist.top(); + freelist.pop(); + } if (obj) { memMeterDec(meter.idle); ++saved_calls; @@ -77,7 +81,7 @@ MemPoolMalloc::deallocate(void *obj, bool aggressive) if (doZero) memset(obj, 0, obj_size); memMeterInc(meter.idle); - freelist.push_back(obj); + freelist.push(obj); } } @@ -133,7 +137,9 @@ MemPoolMalloc::idleTrigger(int shift) const void MemPoolMalloc::clean(time_t maxage) { - while (void *obj = freelist.pop()) { + while (!freelist.empty()) { + void *obj = freelist.top(); + freelist.pop(); memMeterDec(meter.idle); memMeterDec(meter.alloc); xfree(obj); diff --git a/src/cbdata.cc b/src/cbdata.cc index 7c656c7ee0..74e1724483 100644 --- a/src/cbdata.cc +++ b/src/cbdata.cc @@ -118,7 +118,7 @@ public: if (calls.size() > 1000) return; - calls.push_back(new CBDataCall(label, aFile, aLine)); + calls.push(new CBDataCall(label, aFile, aLine)); } dlink_node link; @@ -209,10 +209,11 @@ cbdata_hash(const void *p, unsigned int mod) cbdata::~cbdata() { #if USE_CBDATA_DEBUG - CBDataCall *aCall; - while ((aCall = calls.pop())) - delete aCall; + while (!calls.empty()) { + delete calls.top(); + calls.pop(); + } #endif diff --git a/src/store.cc b/src/store.cc index 6da82d5048..6a75aef627 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1253,7 +1253,7 @@ StoreEntry::release() // lock the entry until rebuilding is done lock("storeLateRelease"); setReleaseFlag(); - LateReleaseStack.push_back(this); + LateReleaseStack.push(this); } else { destroyStoreEntry(static_cast(this)); // "this" is no longer valid @@ -1289,8 +1289,14 @@ storeLateRelease(void *unused) return; } + // TODO: this works but looks unelegant. for (i = 0; i < 10; ++i) { - e = LateReleaseStack.empty() ? NULL : LateReleaseStack.pop(); + if (LateReleaseStack.empty()) { + e = NULL; + } else { + e = LateReleaseStack.top(); + LateReleaseStack.pop(); + } if (e == NULL) { /* done! */