diff --git a/include/llvm/ADT/StringMap.h b/include/llvm/ADT/StringMap.h index 3c5f76a3c1c..cb1dd9f1329 100644 --- a/include/llvm/ADT/StringMap.h +++ b/include/llvm/ADT/StringMap.h @@ -279,7 +279,7 @@ public: if (I->Item && I->Item != getTombstoneVal()) static_cast(I->Item)->Destroy(Allocator); } - delete [] TheTable; + free(TheTable); } }; diff --git a/lib/Support/StringMap.cpp b/lib/Support/StringMap.cpp index caf9ba350ef..e7263e247b3 100644 --- a/lib/Support/StringMap.cpp +++ b/lib/Support/StringMap.cpp @@ -38,8 +38,7 @@ void StringMapImpl::init(unsigned InitSize) { NumItems = 0; NumTombstones = 0; - TheTable = new ItemBucket[NumBuckets+1](); - memset(TheTable, 0, NumBuckets*sizeof(ItemBucket)); + TheTable = (ItemBucket*)calloc(NumBuckets+1, sizeof(ItemBucket)); // Allocate one extra bucket, set it to look filled so the iterators stop at // end. @@ -200,8 +199,7 @@ void StringMapImpl::RehashTable() { unsigned NewSize = NumBuckets*2; // Allocate one extra bucket which will always be non-empty. This allows the // iterators to stop at end. - ItemBucket *NewTableArray = new ItemBucket[NewSize+1](); - memset(NewTableArray, 0, NewSize*sizeof(ItemBucket)); + ItemBucket *NewTableArray =(ItemBucket*)calloc(NewSize+1, sizeof(ItemBucket)); NewTableArray[NewSize].Item = (StringMapEntryBase*)2; // Rehash all the items into their new buckets. Luckily :) we already have