[Scummvm-git-logs] scummvm master -> 4469101724ccc04e7f06e43028120119abf6e68a
AndywinXp
noreply at scummvm.org
Sun Sep 24 17:28:01 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4469101724 SWORD1: Make MemoryManager more robust to crashes
Commit: 4469101724ccc04e7f06e43028120119abf6e68a
https://github.com/scummvm/scummvm/commit/4469101724ccc04e7f06e43028120119abf6e68a
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-09-24T19:27:57+02:00
Commit Message:
SWORD1: Make MemoryManager more robust to crashes
This will also make my life easier when debugging...
Changed paths:
engines/sword1/memman.cpp
diff --git a/engines/sword1/memman.cpp b/engines/sword1/memman.cpp
index d8b7b6223e0..e59c37a5c61 100644
--- a/engines/sword1/memman.cpp
+++ b/engines/sword1/memman.cpp
@@ -74,24 +74,33 @@ void MemMan::setCondition(MemHandle *bsMem, uint16 pCond) {
}
void MemMan::flush() {
- while (_memListFree) {
- free(_memListFreeEnd->data);
- _memListFreeEnd->data = NULL;
- _memListFreeEnd->cond = MEM_FREED;
- _alloced -= _memListFreeEnd->size;
- removeFromFreeList(_memListFreeEnd);
+ if (_memListFree && !_memListFreeEnd) {
+ warning("MemMan::flush(): _memListFreeEnd is nullptr");
+ } else {
+ while (_memListFree) {
+ free(_memListFreeEnd->data);
+ _memListFreeEnd->data = NULL;
+ _memListFreeEnd->cond = MEM_FREED;
+ _alloced -= _memListFreeEnd->size;
+ removeFromFreeList(_memListFreeEnd);
+ }
}
+
if (_alloced)
warning("MemMan::flush: Something's wrong: still %d bytes alloced", _alloced);
}
void MemMan::checkMemoryUsage() {
- while ((_alloced > MAX_ALLOC) && _memListFree) {
- free(_memListFreeEnd->data);
- _memListFreeEnd->data = NULL;
- _memListFreeEnd->cond = MEM_FREED;
- _alloced -= _memListFreeEnd->size;
- removeFromFreeList(_memListFreeEnd);
+ if ((_alloced > MAX_ALLOC) && _memListFree && !_memListFreeEnd) {
+ warning("MemMan::checkMemoryUsage(): _memListFreeEnd is nullptr");
+ } else {
+ while ((_alloced > MAX_ALLOC) && _memListFree) {
+ free(_memListFreeEnd->data);
+ _memListFreeEnd->data = NULL;
+ _memListFreeEnd->cond = MEM_FREED;
+ _alloced -= _memListFreeEnd->size;
+ removeFromFreeList(_memListFreeEnd);
+ }
}
}
More information about the Scummvm-git-logs
mailing list