Przeglądaj źródła

fix out of bounds with empty struct

Daniel Gavin 4 lat temu
rodzic
commit
088f4b5039
2 zmienionych plików z 7 dodań i 4 usunięć
  1. 6 1
      core/odin/printer/printer.odin
  2. 1 3
      core/odin/printer/visit.odin

+ 6 - 1
core/odin/printer/printer.odin

@@ -493,7 +493,8 @@ align_var_decls :: proc(p: ^Printer) {
 			   line.format_tokens[i].kind == .Union ||
 			   line.format_tokens[i].kind == .Enum ||
 			   line.format_tokens[i].kind == .Struct ||
-			   line.format_tokens[i].kind == .For {
+			   line.format_tokens[i].kind == .For ||
+			   line.format_tokens[i].kind == .If {
 				continue_flag = true;
 			}
 
@@ -772,6 +773,10 @@ align_struct :: proc(p: ^Printer, index: int) {
 
 	format_tokens := make([]TokenAndLength, brace_token.parameter_count, context.temp_allocator);
 
+	if brace_token.parameter_count == 0 {
+		return;
+	}
+
 	for line, line_index in p.lines[brace_line + 1:] {
 		length := 0;
 

+ 1 - 3
core/odin/printer/visit.odin

@@ -487,9 +487,7 @@ visit_exprs :: proc(p: ^Printer, list: []^ast.Expr, add_comma := false, trailing
 		//Don't move the first expression, it looks bad
 		if i != 0 && force_newline {
 			newline_position(p, 1);
-		}
-
-		else if i != 0 {
+		} else if i != 0 {
 			move_line_limit(p, expr.pos, 1);
 		}