mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
[cpp] Fixes #1444. SpineObject was using the wrong calloc.
This commit is contained in:
parent
372b8ff425
commit
e89043b1f6
@ -112,7 +112,7 @@ bool AppDelegate::applicationDidFinishLaunching () {
|
|||||||
|
|
||||||
// create a scene. it's an autorelease object
|
// create a scene. it's an autorelease object
|
||||||
//auto scene = RaptorExample::scene();
|
//auto scene = RaptorExample::scene();
|
||||||
auto scene = MixAndMatchExample::scene();
|
auto scene = BatchingExample::scene();
|
||||||
|
|
||||||
// run
|
// run
|
||||||
director->runWithScene(scene);
|
director->runWithScene(scene);
|
||||||
|
|||||||
@ -63,12 +63,14 @@ public:
|
|||||||
|
|
||||||
void clearAllocations() {
|
void clearAllocations() {
|
||||||
_allocated.clear();
|
_allocated.clear();
|
||||||
|
_usedMemory = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void *_alloc(size_t size, const char *file, int line) {
|
virtual void *_alloc(size_t size, const char *file, int line) {
|
||||||
void *result = _extension->_alloc(size, file, line);
|
void *result = _extension->_alloc(size, file, line);
|
||||||
_allocated[result] = Allocation(result, size, file, line);
|
_allocated[result] = Allocation(result, size, file, line);
|
||||||
_allocations++;
|
_allocations++;
|
||||||
|
_usedMemory += size;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,14 +78,17 @@ public:
|
|||||||
void *result = _extension->_calloc(size, file, line);
|
void *result = _extension->_calloc(size, file, line);
|
||||||
_allocated[result] = Allocation(result, size, file, line);
|
_allocated[result] = Allocation(result, size, file, line);
|
||||||
_allocations++;
|
_allocations++;
|
||||||
|
_usedMemory += size;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void *_realloc(void *ptr, size_t size, const char *file, int line) {
|
virtual void *_realloc(void *ptr, size_t size, const char *file, int line) {
|
||||||
|
if (_allocated.count(ptr)) _usedMemory -= _allocated[ptr].size;
|
||||||
_allocated.erase(ptr);
|
_allocated.erase(ptr);
|
||||||
void *result = _extension->_realloc(ptr, size, file, line);
|
void *result = _extension->_realloc(ptr, size, file, line);
|
||||||
_reallocations++;
|
_reallocations++;
|
||||||
_allocated[result] = Allocation(result, size, file, line);
|
_allocated[result] = Allocation(result, size, file, line);
|
||||||
|
_usedMemory += size;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,6 +96,7 @@ public:
|
|||||||
if (_allocated.count(mem)) {
|
if (_allocated.count(mem)) {
|
||||||
_extension->_free(mem, file, line);
|
_extension->_free(mem, file, line);
|
||||||
_frees++;
|
_frees++;
|
||||||
|
_usedMemory -= _allocated[mem].size;
|
||||||
_allocated.erase(mem);
|
_allocated.erase(mem);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -103,12 +109,17 @@ public:
|
|||||||
return _extension->_readFile(path, length);
|
return _extension->_readFile(path, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t getUsedMemory() {
|
||||||
|
return _usedMemory;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SpineExtension* _extension;
|
SpineExtension* _extension;
|
||||||
std::map<void*, Allocation> _allocated;
|
std::map<void*, Allocation> _allocated;
|
||||||
size_t _allocations;
|
size_t _allocations;
|
||||||
size_t _reallocations;
|
size_t _reallocations;
|
||||||
size_t _frees;
|
size_t _frees;
|
||||||
|
size_t _usedMemory;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -36,11 +36,11 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
void *SpineObject::operator new(size_t sz) {
|
void *SpineObject::operator new(size_t sz) {
|
||||||
return SpineExtension::calloc<SpineObject>(sz, __FILE__, __LINE__);
|
return SpineExtension::getInstance()->_calloc(sz, __FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *SpineObject::operator new(size_t sz, const char *file, int line) {
|
void *SpineObject::operator new(size_t sz, const char *file, int line) {
|
||||||
return SpineExtension::calloc<SpineObject>(sz, file, line);
|
return SpineExtension::getInstance()->_calloc(sz, file, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *SpineObject::operator new(size_t sz, void *ptr) {
|
void *SpineObject::operator new(size_t sz, void *ptr) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user