From 4a2a60990b9e2360923fe06f6454e4c5be03a6d0 Mon Sep 17 00:00:00 2001 From: IonutParau Date: Thu, 5 Feb 2026 11:44:24 +0100 Subject: [PATCH] fixed 2 bugs --- rewrite/main.c | 29 ++++++++++++++++++++++++++--- rewrite/neonucleus.c | 6 ++++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/rewrite/main.c b/rewrite/main.c index 2bf8f2b..d5bd401 100644 --- a/rewrite/main.c +++ b/rewrite/main.c @@ -27,6 +27,24 @@ static nn_Exit sandbox_handler(nn_ComponentRequest *req) { return NN_OK; } +static nn_Exit sandbox_arch(nn_ArchitectureRequest *req) { + nn_Computer *c = req->computer; + switch(req->action) { + case NN_ARCH_INIT: + return NN_OK; + case NN_ARCH_DEINIT: + return NN_OK; + case NN_ARCH_FREEMEM: + req->freeMemory = 0; + return NN_OK; + case NN_ARCH_TICK: + nn_pushstring(c, "Hello from component call"); + nn_call(c, "sandbox", "log"); + return NN_OK; + } + return NN_OK; +} + int main() { nn_Context ctx; nn_initContext(&ctx); @@ -34,6 +52,12 @@ int main() { // create the universe nn_Universe *u = nn_createUniverse(&ctx); + nn_Architecture arch = { + .name = "Sandbox test", + .state = NULL, + .handler = sandbox_arch, + }; + nn_ComponentMethod sandboxMethods[] = { {"log", "log(msg: string) - Log to stdout", true}, {NULL}, @@ -42,10 +66,9 @@ int main() { nn_Computer *c = nn_createComputer(u, NULL, "computer0", 8 * NN_MiB, 256, 256); - nn_addComponent(c, ctype, "sandbox", -1, NULL); + nn_setArchitecture(c, &arch); - nn_pushstring(c, "Hello from component call"); - nn_call(c, "sandbox", "log"); + nn_addComponent(c, ctype, "sandbox", -1, NULL); printf("Component added: %s\n", nn_hasComponent(c, "sandbox") ? "TRUE" : "FALSE"); printf("Method active: %s\n", nn_hasMethod(c, "sandbox", "log") ? "TRUE" : "FALSE"); diff --git a/rewrite/neonucleus.c b/rewrite/neonucleus.c index 59b1582..633999e 100644 --- a/rewrite/neonucleus.c +++ b/rewrite/neonucleus.c @@ -826,7 +826,7 @@ nn_Exit nn_addComponent(nn_Computer *computer, nn_ComponentType *ctype, const ch computer->components[computer->componentLen++] = c; - if(computer->state != NN_BOOTUP) { + if(computer->state == NN_RUNNING) { err = nn_pushstring(computer, "component_added"); if(err) return err; err = nn_pushstring(computer, address); @@ -913,7 +913,7 @@ nn_Exit nn_removeComponent(nn_Computer *computer, const char *address) { if(c.address == NULL) return NN_EBADSTATE; nn_dropComponent(computer, c); - if(computer->state != NN_BOOTUP) { + if(computer->state == NN_RUNNING) { nn_Exit err = nn_pushstring(computer, "component_removed"); if(err) return err; err = nn_pushstring(computer, address); @@ -1254,7 +1254,9 @@ size_t nn_countSignals(nn_Computer *computer) { } nn_Exit nn_pushSignal(nn_Computer *computer, size_t valueCount) { + if(computer->state != NN_RUNNING) return nn_popn(computer, valueCount); if(computer->signalCount == NN_MAX_SIGNALS) return NN_ELIMIT; + if(computer->stackSize < valueCount) return NN_EBELOWSTACK; int cost = nn_countValueCost(computer, valueCount); if(cost == -1) return NN_EBADSTATE;