Skip to content
32 changes: 16 additions & 16 deletions src/glfw/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,26 +286,26 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'f': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s'\n", optarg);
exit(1);
}

hmput(args->screenshotFrames, (int) frame, true);
hmput(args->screenshotFrames, frame, true);
break;
}
case 'U':
args->screenshotSurfacesPattern = optarg;
break;
case 'V': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --screenshot-surfaces-at-frame\n", optarg);
exit(1);
}
hmput(args->screenshotSurfacesFrames, (int) frame, true);
hmput(args->screenshotSurfacesFrames, frame, true);
break;
}
case 'h':
Expand Down Expand Up @@ -361,42 +361,42 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'x': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --exit-at-frame\n", optarg);
exit(1);
}
args->exitAtFrame = (int) frame;
args->exitAtFrame = frame;
break;
}
case 'F': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --trace-bytecode-after-frame\n", optarg);
exit(1);
}
args->traceBytecodeAfterFrame = (int) frame;
args->traceBytecodeAfterFrame = frame;
break;
}
case 'd': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --dump-frame\n", optarg);
exit(1);
}
hmput(args->dumpFrames, (int) frame, true);
hmput(args->dumpFrames, frame, true);
break;
}
case 'j': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --dump-frame-json\n", optarg);
exit(1);
}
hmput(args->dumpJsonFrames, (int) frame, true);
hmput(args->dumpJsonFrames, frame, true);
break;
}
case 'J':
Expand Down Expand Up @@ -445,12 +445,12 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'Z': {
char* endPtr;
long seedVal = strtol(optarg, &endPtr, 10);
int seedVal = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0') {
fprintf(stderr, "Error: Invalid seed value '%s' for --seed\n", optarg);
exit(1);
}
args->seed = (int) seedVal;
args->seed = seedVal;
args->hasSeed = true;
break;
}
Expand All @@ -462,12 +462,12 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'q': {
char* endPtr;
long framesBetween = strtol(optarg, &endPtr, 10);
int framesBetween = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || framesBetween <= 0) {
fprintf(stderr, "Error: Invalid frame count '%s' for --profile-gml-scripts (must be > 0)\n", optarg);
exit(1);
}
args->profilerFramesBetween = (int) framesBetween;
args->profilerFramesBetween = framesBetween;
break;
}
case 'B':
Expand Down
3 changes: 3 additions & 0 deletions src/renderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@
// ===[ Renderer Vtable ]===

typedef struct Renderer Renderer;
#ifndef RUNNER_DEFINED
#define RUNNER_DEFINED
typedef struct Runner Runner;
#endif

typedef struct {
void (*init)(Renderer* renderer, DataWin* dataWin);
Expand Down
32 changes: 16 additions & 16 deletions src/sdl/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,26 +220,26 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'f': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s'\n", optarg);
exit(1);
}

hmput(args->screenshotFrames, (int) frame, true);
hmput(args->screenshotFrames, frame, true);
break;
}
case 'U':
args->screenshotSurfacesPattern = optarg;
break;
case 'V': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --screenshot-surfaces-at-frame\n", optarg);
exit(1);
}
hmput(args->screenshotSurfacesFrames, (int) frame, true);
hmput(args->screenshotSurfacesFrames, frame, true);
break;
}
case 'h':
Expand Down Expand Up @@ -289,42 +289,42 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'x': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --exit-at-frame\n", optarg);
exit(1);
}
args->exitAtFrame = (int) frame;
args->exitAtFrame = frame;
break;
}
case 'F': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --trace-bytecode-after-frame\n", optarg);
exit(1);
}
args->traceBytecodeAfterFrame = (int) frame;
args->traceBytecodeAfterFrame = frame;
break;
}
case 'd': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --dump-frame\n", optarg);
exit(1);
}
hmput(args->dumpFrames, (int) frame, true);
hmput(args->dumpFrames, frame, true);
break;
}
case 'j': {
char* endPtr;
long frame = strtol(optarg, &endPtr, 10);
int frame = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || 0 > frame) {
fprintf(stderr, "Error: Invalid frame number '%s' for --dump-frame-json\n", optarg);
exit(1);
}
hmput(args->dumpJsonFrames, (int) frame, true);
hmput(args->dumpJsonFrames, frame, true);
break;
}
case 'J':
Expand Down Expand Up @@ -373,12 +373,12 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'Z': {
char* endPtr;
long seedVal = strtol(optarg, &endPtr, 10);
int seedVal = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0') {
fprintf(stderr, "Error: Invalid seed value '%s' for --seed\n", optarg);
exit(1);
}
args->seed = (int) seedVal;
args->seed = seedVal;
args->hasSeed = true;
break;
}
Expand All @@ -390,12 +390,12 @@ static void parseCommandLineArgs(CommandLineArgs* args, int argc, char* argv[])
break;
case 'q': {
char* endPtr;
long framesBetween = strtol(optarg, &endPtr, 10);
int framesBetween = strtol(optarg, &endPtr, 10);
if (*endPtr != '\0' || framesBetween <= 0) {
fprintf(stderr, "Error: Invalid frame count '%s' for --profile-gml-scripts (must be > 0)\n", optarg);
exit(1);
}
args->profilerFramesBetween = (int) framesBetween;
args->profilerFramesBetween = framesBetween;
break;
}
case 'B':
Expand Down
5 changes: 4 additions & 1 deletion src/spatial_grid.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
#include <stdint.h>

// Forward declarations
#ifndef RUNNER_DEFINED
#define RUNNER_DEFINED
typedef struct Runner Runner;
#endif

#include "instance.h"
#include "real_type.h"
Expand Down Expand Up @@ -82,4 +85,4 @@ typedef struct {
uint32_t queryId;
} SpatialGridQuery;

SpatialGridQuery SpatialGrid_prepareQuery(Runner* runner, GMLReal x1, GMLReal y1, GMLReal x2, GMLReal y2, int32_t target);
SpatialGridQuery SpatialGrid_prepareQuery(Runner* runner, GMLReal x1, GMLReal y1, GMLReal x2, GMLReal y2, int32_t target);
8 changes: 2 additions & 6 deletions src/vm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1207,9 +1207,7 @@ static void handlePush(VMContext* ctx, uint32_t instr, const uint8_t* extraData,
RValue_free(topSlot);
GMLArray* sub = GMLArray_create(0);
sub->owner = top->owner;
RValue rv = { .type = RVALUE_ARRAY, .ownsReference = true, .gmlStackType = GML_TYPE_VARIABLE };
rv.array = sub;
*topSlot = rv;
*topSlot = RValue_makeArray(sub);
}
// Push a weak ref to the sub-array — short-lived, consumed by the next BREAK op.
stackPush(ctx, RValue_makeArrayWeak(topSlot->array));
Expand Down Expand Up @@ -2631,9 +2629,7 @@ static void handleBreakPushAC(VMContext* ctx, uint32_t instrAddr) {
RValue_free(parentSlot);
GMLArray* sub = GMLArray_create(0);
sub->owner = parent->owner;
RValue rv = { .type = RVALUE_ARRAY, .ownsReference = true, .gmlStackType = GML_TYPE_VARIABLE };
rv.array = sub;
*parentSlot = rv;
*parentSlot = RValue_makeArray(sub);
}
stackPush(ctx, RValue_makeArrayWeak(parentSlot->array));
RValue_free(&arrayRef);
Expand Down
1 change: 1 addition & 0 deletions src/vm_builtins.c
Original file line number Diff line number Diff line change
Expand Up @@ -7234,6 +7234,7 @@ static RValue builtin_draw_healthbar(VMContext* ctx, RValue* args, MAYBE_UNUSED
}

runner->renderer->vtable->drawRectangle(runner->renderer,x1,y1,healthbarX,y2,intermediateColor, runner->renderer->drawAlpha, false);
return RValue_makeUndefined();
}

static RValue builtin_draw_set_color(VMContext* ctx, RValue* args, MAYBE_UNUSED int32_t argCount) {
Expand Down
2 changes: 1 addition & 1 deletion vendor/stb/ds/stb_ds.h
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ extern void * stbds_shmode_func(size_t elemsize, int mode);
#endif

#if !defined(__cplusplus)
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && (!defined(__GNUC__) || (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)))
#define STBDS_HAS_LITERAL_ARRAY
#endif
#endif
Expand Down
Loading