fix gc bug

This commit is contained in:
2026-02-25 23:26:08 -06:00
parent 5b482854f4
commit 0757b2c5ce

View File

@@ -244,6 +244,7 @@ JSC_CCALL(midi_parse,
JS_ROOT(evt, JS_NULL); JS_ROOT(evt, JS_NULL);
int idx = 0; int idx = 0;
JSValue tmp;
for (tml_message *msg = midi; msg; msg = msg->next) { for (tml_message *msg = midi; msg; msg = msg->next) {
evt.val = JS_NewObject(js); evt.val = JS_NewObject(js);
JS_SetPropertyStr(js, evt.val, "time", JS_NewInt32(js, msg->time)); JS_SetPropertyStr(js, evt.val, "time", JS_NewInt32(js, msg->time));
@@ -251,29 +252,35 @@ JSC_CCALL(midi_parse,
switch (msg->type) { switch (msg->type) {
case TML_NOTE_ON: case TML_NOTE_ON:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_on")); tmp = JS_NewString(js, "note_on");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key)); JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
JS_SetPropertyStr(js, evt.val, "velocity", JS_NewInt32(js, msg->velocity)); JS_SetPropertyStr(js, evt.val, "velocity", JS_NewInt32(js, msg->velocity));
break; break;
case TML_NOTE_OFF: case TML_NOTE_OFF:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_off")); tmp = JS_NewString(js, "note_off");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key)); JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
break; break;
case TML_CONTROL_CHANGE: case TML_CONTROL_CHANGE:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "control")); tmp = JS_NewString(js, "control");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "control", JS_NewInt32(js, msg->control)); JS_SetPropertyStr(js, evt.val, "control", JS_NewInt32(js, msg->control));
JS_SetPropertyStr(js, evt.val, "value", JS_NewInt32(js, msg->control_value)); JS_SetPropertyStr(js, evt.val, "value", JS_NewInt32(js, msg->control_value));
break; break;
case TML_PROGRAM_CHANGE: case TML_PROGRAM_CHANGE:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "program")); tmp = JS_NewString(js, "program");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "program", JS_NewInt32(js, msg->program)); JS_SetPropertyStr(js, evt.val, "program", JS_NewInt32(js, msg->program));
break; break;
case TML_PITCH_BEND: case TML_PITCH_BEND:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "pitch_bend")); tmp = JS_NewString(js, "pitch_bend");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "pitch_bend", JS_NewInt32(js, msg->pitch_bend)); JS_SetPropertyStr(js, evt.val, "pitch_bend", JS_NewInt32(js, msg->pitch_bend));
break; break;
case TML_SET_TEMPO: case TML_SET_TEMPO:
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "tempo")); tmp = JS_NewString(js, "tempo");
JS_SetPropertyStr(js, evt.val, "type", tmp);
JS_SetPropertyStr(js, evt.val, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg))); JS_SetPropertyStr(js, evt.val, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg)));
break; break;
default: default: