From 59e60cf3c00509ec0c67be3db74d2d21b7707f3a Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Thu, 5 Jun 2025 19:40:29 +0800 Subject: [PATCH] backup --- src/common/name.c | 11 ++++++----- src/public/py_exception.c | 7 +++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/common/name.c b/src/common/name.c index e7783e89..be1f3e69 100644 --- a/src/common/name.c +++ b/src/common/name.c @@ -46,15 +46,16 @@ py_Name py_namev(c11_sv name) { uint64_t hash = c11_sv__hash(name); int index = hash & 0xFFFF; NameBucket* p = pk_string_table.table[index]; + NameBucket* prev = NULL; bool found = false; while(p) { c11_sv p_sv = {p->data, p->size}; if(p->hash == hash && c11__sveq(p_sv, name)) { found = true; break; - } else { - p = p->next; } + prev = p; + p = p->next; } if(found) { atomic_store(&pk_string_table.lock, false); @@ -68,11 +69,11 @@ py_Name py_namev(c11_sv name) { bucket->size = name.size; memcpy(bucket->data, name.data, name.size); bucket->data[name.size] = '\0'; - if(p == NULL) { + if(prev == NULL) { pk_string_table.table[index] = bucket; } else { - assert(p->next == NULL); - p->next = bucket; + assert(prev->next == NULL); + prev->next = bucket; } atomic_store(&pk_string_table.lock, false); return (py_Name)bucket; diff --git a/src/public/py_exception.c b/src/public/py_exception.c index 1b2e3aeb..4110818b 100644 --- a/src/public/py_exception.c +++ b/src/public/py_exception.c @@ -225,6 +225,13 @@ char* py_formatexc() { } bool py_exception(py_Type type, const char* fmt, ...) { +#ifndef NDEBUG + if(py_checkexc(true)) { + const char* name = py_tpname(pk_current_vm->curr_exception.type); + c11__abort("py_exception(): `%s` was already set!", name); + } +#endif + c11_sbuf buf; c11_sbuf__ctor(&buf); va_list args;