Browse Source

fix segfault in release builds of the compiler with clang++-18

Laytan 1 year ago
parent
commit
b0b60fe7ed
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/exact_value.cpp

+ 5 - 0
src/exact_value.cpp

@@ -121,12 +121,14 @@ gb_internal ExactValue exact_value_string(String string) {
 
 
 gb_internal ExactValue exact_value_i64(i64 i) {
 gb_internal ExactValue exact_value_i64(i64 i) {
 	ExactValue result = {ExactValue_Integer};
 	ExactValue result = {ExactValue_Integer};
+	result.value_integer = {0};
 	big_int_from_i64(&result.value_integer, i);
 	big_int_from_i64(&result.value_integer, i);
 	return result;
 	return result;
 }
 }
 
 
 gb_internal ExactValue exact_value_u64(u64 i) {
 gb_internal ExactValue exact_value_u64(u64 i) {
 	ExactValue result = {ExactValue_Integer};
 	ExactValue result = {ExactValue_Integer};
+	result.value_integer = {0};
 	big_int_from_u64(&result.value_integer, i);
 	big_int_from_u64(&result.value_integer, i);
 	return result;
 	return result;
 }
 }
@@ -177,6 +179,7 @@ gb_internal ExactValue exact_value_typeid(Type *type) {
 
 
 gb_internal ExactValue exact_value_integer_from_string(String const &string) {
 gb_internal ExactValue exact_value_integer_from_string(String const &string) {
 	ExactValue result = {ExactValue_Integer};
 	ExactValue result = {ExactValue_Integer};
+	result.value_integer = {0};
 	bool success;
 	bool success;
 	big_int_from_string(&result.value_integer, string, &success);
 	big_int_from_string(&result.value_integer, string, &success);
 	if (!success) {
 	if (!success) {
@@ -585,6 +588,7 @@ gb_internal ExactValue exact_unary_operator_value(TokenKind op, ExactValue v, i3
 			return v;
 			return v;
 		case ExactValue_Integer: {
 		case ExactValue_Integer: {
 			ExactValue i = {ExactValue_Integer};
 			ExactValue i = {ExactValue_Integer};
+			i.value_integer = {0};
 			big_int_neg(&i.value_integer, &v.value_integer);
 			big_int_neg(&i.value_integer, &v.value_integer);
 			return i;
 			return i;
 		}
 		}
@@ -616,6 +620,7 @@ gb_internal ExactValue exact_unary_operator_value(TokenKind op, ExactValue v, i3
 		case ExactValue_Integer: {
 		case ExactValue_Integer: {
 			GB_ASSERT(precision != 0);
 			GB_ASSERT(precision != 0);
 			ExactValue i = {ExactValue_Integer};
 			ExactValue i = {ExactValue_Integer};
+			i.value_integer = {0};
 			big_int_not(&i.value_integer, &v.value_integer, precision, !is_unsigned);
 			big_int_not(&i.value_integer, &v.value_integer, precision, !is_unsigned);
 			return i;
 			return i;
 		}
 		}