diff options
| author | gingerBill <bill@gingerbill.org> | 2018-12-24 16:11:24 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-12-24 16:11:24 +0000 |
| commit | 956dd26aa0c031709f006d3fec0ef0c5add87e1b (patch) | |
| tree | df76335e8920d2cdcbfd72bedd4ddb6e076ecf1d /src | |
| parent | b504d6e12ab70de583f70955c8ba6150b23ddc56 (diff) | |
Fix race condition; Change `for in` addressing mode
Diffstat (limited to 'src')
| -rw-r--r-- | src/check_stmt.cpp | 11 | ||||
| -rw-r--r-- | src/gb/gb.h | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 2430eee9f..811f59907 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -1452,15 +1452,15 @@ void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) { } skip_expr:; // NOTE(zhiayang): again, declaring a variable immediately after a label... weird. - Ast *lhs[2] = {rs->val0, rs->val1}; - Type * rhs[2] = {val0, val1}; + Ast * lhs[2] = {rs->val0, rs->val1}; + Type *rhs[2] = {val0, val1}; for (isize i = 0; i < 2; i++) { if (lhs[i] == nullptr) { continue; } - Ast *name = lhs[i]; - Type * type = rhs[i]; + Ast * name = lhs[i]; + Type *type = rhs[i]; Entity *entity = nullptr; if (name->kind == Ast_Ident) { @@ -1472,8 +1472,9 @@ void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) { found = scope_lookup_current(ctx->scope, str); } if (found == nullptr) { - bool is_immutable = true; + bool is_immutable = false; entity = alloc_entity_variable(ctx->scope, token, type, is_immutable, EntityState_Resolved); + entity->flags |= EntityFlag_Value; add_entity_definition(&ctx->checker->info, name, entity); } else { TokenPos pos = found->token.pos; diff --git a/src/gb/gb.h b/src/gb/gb.h index 4e7473432..adeb554b2 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -4702,6 +4702,7 @@ gb_inline void gb_thread_start_with_stack(gbThread *t, gbThreadProc *proc, void t->proc = proc; t->user_data = user_data; t->stack_size = stack_size; + t->is_running = true; #if defined(GB_SYSTEM_WINDOWS) t->win32_handle = CreateThread(NULL, stack_size, gb__thread_proc, t, 0, NULL); @@ -4719,7 +4720,6 @@ gb_inline void gb_thread_start_with_stack(gbThread *t, gbThreadProc *proc, void } #endif - t->is_running = true; gb_semaphore_wait(&t->semaphore); } |