Prechádzať zdrojové kódy

Merge pull request #1245 from AThousandShips/alloc_fix

Fix allocation size overflow check in `CowData`
David Snopek 1 rok pred
rodič
commit
a3dfbbde85
1 zmenil súbory, kde vykonal 5 pridanie a 2 odobranie
  1. 5 2
      include/godot_cpp/templates/cowdata.hpp

+ 5 - 2
include/godot_cpp/templates/cowdata.hpp

@@ -102,6 +102,10 @@ private:
 	}
 
 	_FORCE_INLINE_ bool _get_alloc_size_checked(size_t p_elements, size_t *out) const {
+		if (unlikely(p_elements == 0)) {
+			*out = 0;
+			return true;
+		}
 #if defined(__GNUC__)
 		size_t o;
 		size_t p;
@@ -113,13 +117,12 @@ private:
 		if (__builtin_add_overflow(o, static_cast<size_t>(32), &p)) {
 			return false; // No longer allocated here.
 		}
-		return true;
 #else
 		// Speed is more important than correctness here, do the operations unchecked
 		// and hope for the best.
 		*out = _get_alloc_size(p_elements);
-		return true;
 #endif
+		return *out;
 	}
 
 	void _unref(void *p_data);