| Index: include/core/SkTemplates.h
|
| diff --git a/include/core/SkTemplates.h b/include/core/SkTemplates.h
|
| index 5eb7885425f46c31389be142bfeb81e93acdfecb..ce76dbfbbab2a3097f8b0555d790d164de5f477b 100644
|
| --- a/include/core/SkTemplates.h
|
| +++ b/include/core/SkTemplates.h
|
| @@ -101,7 +101,7 @@ private:
|
| template <typename T> class SkAutoTDelete : SkNoncopyable {
|
| public:
|
| SkAutoTDelete(T* obj = NULL) : fObj(obj) {}
|
| - ~SkAutoTDelete() { delete fObj; }
|
| + ~SkAutoTDelete() { SkDELETE(fObj); }
|
|
|
| T* get() const { return fObj; }
|
| T& operator*() const { SkASSERT(fObj); return *fObj; }
|
| @@ -109,7 +109,7 @@ public:
|
|
|
| void reset(T* obj) {
|
| if (fObj != obj) {
|
| - delete fObj;
|
| + SkDELETE(fObj);
|
| fObj = obj;
|
| }
|
| }
|
| @@ -118,7 +118,7 @@ public:
|
| * Delete the owned object, setting the internal pointer to NULL.
|
| */
|
| void free() {
|
| - delete fObj;
|
| + SkDELETE(fObj);
|
| fObj = NULL;
|
| }
|
|
|
| @@ -182,7 +182,7 @@ public:
|
| SkASSERT(count >= 0);
|
| fArray = NULL;
|
| if (count) {
|
| - fArray = new T[count];
|
| + fArray = SkNEW_ARRAY(T, count);
|
| }
|
| SkDEBUGCODE(fCount = count;)
|
| }
|
| @@ -190,17 +190,17 @@ public:
|
| /** Reallocates given a new count. Reallocation occurs even if new count equals old count.
|
| */
|
| void reset(int count) {
|
| - delete[] fArray;
|
| + SkDELETE_ARRAY(fArray);
|
| SkASSERT(count >= 0);
|
| fArray = NULL;
|
| if (count) {
|
| - fArray = new T[count];
|
| + fArray = SkNEW_ARRAY(T, count);
|
| }
|
| SkDEBUGCODE(fCount = count;)
|
| }
|
|
|
| ~SkAutoTArray() {
|
| - delete[] fArray;
|
| + SkDELETE_ARRAY(fArray);
|
| }
|
|
|
| /** Return the array of T elements. Will be NULL if count == 0
|
| @@ -226,25 +226,30 @@ public:
|
| /** Allocate count number of T elements
|
| */
|
| SkAutoSTArray(size_t count) {
|
| + fCount = count;
|
| if (count > N) {
|
| - fArray = new T[count];
|
| - } else if (count) {
|
| - fArray = new (fStorage) T[count];
|
| + fArray = (T*) sk_malloc_throw(count * sizeof(T));
|
| + } else if (count > 0) {
|
| + fArray = (T*) fStorage;
|
| } else {
|
| fArray = NULL;
|
| + return;
|
| + }
|
| + T* iter = fArray;
|
| + T* stop = fArray + count;
|
| + while (iter < stop) {
|
| + SkNEW_PLACEMENT(iter++, T);
|
| }
|
| - fCount = count;
|
| }
|
|
|
| ~SkAutoSTArray() {
|
| + T* start = fArray;
|
| + T* iter = start + fCount;
|
| + while (iter > start) {
|
| + (--iter)->~T();
|
| + }
|
| if (fCount > N) {
|
| - delete[] fArray;
|
| - } else {
|
| - T* start = fArray;
|
| - T* iter = start + fCount;
|
| - while (iter > start) {
|
| - (--iter)->~T();
|
| - }
|
| + sk_free(fArray);
|
| }
|
| }
|
|
|
|
|