Browse Source

Merge branch 'odin-lang:master' into union-tag-intrinsics

jakubtomsu 1 year ago
parent
commit
056840975f

+ 2 - 2
core/os/os.odin

@@ -63,8 +63,8 @@ read_at_least :: proc(fd: Handle, buf: []byte, min: int) -> (n: int, err: Errno)
 	if len(buf) < min {
 	if len(buf) < min {
 		return 0, -1
 		return 0, -1
 	}
 	}
-	for n < min && err == 0 {
-		nn: int
+	nn := max(int)
+	for nn > 0 && n < min && err == 0 {
 		nn, err = read(fd, buf[n:])
 		nn, err = read(fd, buf[n:])
 		n += nn
 		n += nn
 	}
 	}

+ 3 - 3
src/check_builtin.cpp

@@ -5366,7 +5366,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
 
 
 			Operand op = {};
 			Operand op = {};
 			check_expr(c, &op, ce->args[1]);
 			check_expr(c, &op, ce->args[1]);
-			if (op.mode != Addressing_Constant && !is_type_integer(op.type)) {
+			if (op.mode != Addressing_Constant || !is_type_integer(op.type)) {
 				error(op.expr, "Expected a constant integer for the index of procedure parameter value");
 				error(op.expr, "Expected a constant integer for the index of procedure parameter value");
 				return false;
 				return false;
 			}
 			}
@@ -5425,7 +5425,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
 
 
 			Operand op = {};
 			Operand op = {};
 			check_expr(c, &op, ce->args[1]);
 			check_expr(c, &op, ce->args[1]);
-			if (op.mode != Addressing_Constant && !is_type_integer(op.type)) {
+			if (op.mode != Addressing_Constant || !is_type_integer(op.type)) {
 				error(op.expr, "Expected a constant integer for the index of procedure parameter value");
 				error(op.expr, "Expected a constant integer for the index of procedure parameter value");
 				return false;
 				return false;
 			}
 			}
@@ -5503,7 +5503,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
 		} else {
 		} else {
 			Operand op = {};
 			Operand op = {};
 			check_expr(c, &op, ce->args[1]);
 			check_expr(c, &op, ce->args[1]);
-			if (op.mode != Addressing_Constant && !is_type_integer(op.type)) {
+			if (op.mode != Addressing_Constant || !is_type_integer(op.type)) {
 				error(op.expr, "Expected a constant integer for the index of record parameter value");
 				error(op.expr, "Expected a constant integer for the index of record parameter value");
 				return false;
 				return false;
 			}
 			}

+ 1 - 1
vendor/glfw/bindings/bindings.odin

@@ -39,7 +39,7 @@ when ODIN_OS == .Windows {
 /*** Functions ***/
 /*** Functions ***/
 @(default_calling_convention="c", link_prefix="glfw")
 @(default_calling_convention="c", link_prefix="glfw")
 foreign glfw {
 foreign glfw {
-	Init      :: proc() -> c.int ---
+	Init      :: proc() -> b32 ---
 	Terminate :: proc() ---
 	Terminate :: proc() ---
 	
 	
 	InitHint  :: proc(hint, value: c.int) ---
 	InitHint  :: proc(hint, value: c.int) ---

+ 1 - 1
vendor/glfw/bindings/types.odin

@@ -41,7 +41,7 @@ WindowMaximizeProc     :: #type proc "c" (window: WindowHandle, iconified: c.int
 WindowContentScaleProc :: #type proc "c" (window: WindowHandle, xscale, yscale: f32)
 WindowContentScaleProc :: #type proc "c" (window: WindowHandle, xscale, yscale: f32)
 FramebufferSizeProc    :: #type proc "c" (window: WindowHandle, width, height: c.int)
 FramebufferSizeProc    :: #type proc "c" (window: WindowHandle, width, height: c.int)
 DropProc               :: #type proc "c" (window: WindowHandle, count: c.int, paths: [^]cstring)
 DropProc               :: #type proc "c" (window: WindowHandle, count: c.int, paths: [^]cstring)
-MonitorProc            :: #type proc "c" (window: WindowHandle)
+MonitorProc            :: #type proc "c" (window: WindowHandle, event: c.int)
 
 
 KeyProc                :: #type proc "c" (window: WindowHandle, key, scancode, action, mods: c.int)
 KeyProc                :: #type proc "c" (window: WindowHandle, key, scancode, action, mods: c.int)
 MouseButtonProc        :: #type proc "c" (window: WindowHandle, button, action, mods: c.int)
 MouseButtonProc        :: #type proc "c" (window: WindowHandle, button, action, mods: c.int)

+ 13 - 1
vendor/glfw/wrapper.odin

@@ -49,7 +49,19 @@ SetGammaRamp :: glfw.SetGammaRamp
 CreateWindow  :: glfw.CreateWindow
 CreateWindow  :: glfw.CreateWindow
 DestroyWindow :: glfw.DestroyWindow
 DestroyWindow :: glfw.DestroyWindow
 
 
-WindowHint         :: glfw.WindowHint
+WindowHint_int :: proc "contextless" (hint: c.int, value: c.int) {
+	glfw.WindowHint(hint, value)
+}
+
+WindowHint_bool :: proc "contextless" (hint: c.int, value: b32) {
+	glfw.WindowHint(hint, cast(c.int) value)
+}
+
+WindowHint :: proc {
+	WindowHint_int,
+	WindowHint_bool,
+}
+
 DefaultWindowHints :: glfw.DefaultWindowHints
 DefaultWindowHints :: glfw.DefaultWindowHints
 WindowHintString   :: glfw.WindowHintString
 WindowHintString   :: glfw.WindowHintString
 WindowShouldClose  :: glfw.WindowShouldClose
 WindowShouldClose  :: glfw.WindowShouldClose