git » sdk » commit 93050fa

Handle retaining promise results better

author Stephen Paul Weber
2026-01-12 20:37:33 UTC
committer Stephen Paul Weber
2026-01-12 20:37:33 UTC
parent ac24f64fd9f4d2f58f3bb0b7c5d55d89da571814

Handle retaining promise results better

HaxeCBridge.hx +8 -1

diff --git a/HaxeCBridge.hx b/HaxeCBridge.hx
index 28e85d1..9cbb072 100644
--- a/HaxeCBridge.hx
+++ b/HaxeCBridge.hx
@@ -282,16 +282,23 @@ class HaxeCBridge {
 						final atype = convertSecondaryTPtoType(path.params[0]);
 						final aargs = atype.args;
 						args.push({name: "handler", type: TPath({name: "Callable", pack: ["cpp"], params: [TPType(TFunction(aargs.concat([TNamed("handler__context", TPath({name: "RawPointer", pack: ["cpp"], params: [TPType(TPath({ name: "Void", pack: ["cpp"] }))]}))]), TPath({name: "Void", pack: []})))]})});
-						promisify.push(macro v);
 						if (atype.retainType == null) {
 							promisifyE.push(macro false);
 						} else {
 							promisifyE.push(macro null);
 						}
 						if (atype.retainType == "Array") {
+							promisify.push(macro v);
 							promisify.push(macro v.length);
 							promisifyE.push(macro 0);
+						} else if (atype.retainType == "String") {
+							promisify.push(macro HaxeCBridge.retainHaxeString(v));
+						} else if (atype.retainType == "Object") {
+							promisify.push(macro HaxeCBridge.retainHaxeObject(v));
+						} else {
+							promisify.push(macro v);
 						}
+
 						args.push({name: "handler__context", type: TPath({name: "RawPointer", pack: ["cpp"], params: [TPType(TPath({ name: "Void", pack: ["cpp"] }))]})});
 						promisify.push(macro handler__context);
 						promisifyE.push(macro handler__context);