Browse Source

Don't use in some functions empty PoolByteArrays

qarmin 5 years ago
parent
commit
04c6579fd7
1 changed files with 13 additions and 8 deletions
  1. 13 8
      core/variant_call.cpp

+ 13 - 8
core/variant_call.cpp

@@ -553,7 +553,7 @@ struct _VariantCall {
 
 		PoolByteArray *ba = reinterpret_cast<PoolByteArray *>(p_self._data._mem);
 		String s;
-		if (ba->size() >= 0) {
+		if (ba->size() > 0) {
 			PoolByteArray::Read r = ba->read();
 			CharString cs;
 			cs.resize(ba->size() + 1);
@@ -569,7 +569,7 @@ struct _VariantCall {
 
 		PoolByteArray *ba = reinterpret_cast<PoolByteArray *>(p_self._data._mem);
 		String s;
-		if (ba->size() >= 0) {
+		if (ba->size() > 0) {
 			PoolByteArray::Read r = ba->read();
 			s.parse_utf8((const char *)r.ptr(), ba->size());
 		}
@@ -580,14 +580,15 @@ struct _VariantCall {
 
 		PoolByteArray *ba = reinterpret_cast<PoolByteArray *>(p_self._data._mem);
 		PoolByteArray compressed;
-		Compression::Mode mode = (Compression::Mode)(int)(*p_args[0]);
+		if (ba->size() > 0) {
+			Compression::Mode mode = (Compression::Mode)(int)(*p_args[0]);
 
-		compressed.resize(Compression::get_max_compressed_buffer_size(ba->size(), mode));
-		int result = Compression::compress(compressed.write().ptr(), ba->read().ptr(), ba->size(), mode);
-
-		result = result >= 0 ? result : 0;
-		compressed.resize(result);
+			compressed.resize(Compression::get_max_compressed_buffer_size(ba->size(), mode));
+			int result = Compression::compress(compressed.write().ptr(), ba->read().ptr(), ba->size(), mode);
 
+			result = result >= 0 ? result : 0;
+			compressed.resize(result);
+		}
 		r_ret = compressed;
 	}
 
@@ -615,6 +616,10 @@ struct _VariantCall {
 
 	static void _call_PoolByteArray_hex_encode(Variant &r_ret, Variant &p_self, const Variant **p_args) {
 		PoolByteArray *ba = reinterpret_cast<PoolByteArray *>(p_self._data._mem);
+		if (ba->size() == 0) {
+			r_ret = String();
+			return;
+		}
 		PoolByteArray::Read r = ba->read();
 		String s = String::hex_encode_buffer(&r[0], ba->size());
 		r_ret = s;