From e0e5d6a231a57b5355493b2e689ad977a66a1ff3 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 12 Oct 2021 14:24:58 -0400 Subject: [PATCH 1/4] Fix comment typo --- generator/generators/descriptorDecoder.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generator/generators/descriptorDecoder.mjs b/generator/generators/descriptorDecoder.mjs index 0ce6f87c..2921525d 100644 --- a/generator/generators/descriptorDecoder.mjs +++ b/generator/generators/descriptorDecoder.mjs @@ -59,7 +59,7 @@ ${padding} Napi::Array array = ${input.name}.Get("${member.name}").As Date: Tue, 12 Oct 2021 14:25:51 -0400 Subject: [PATCH 2/4] Fix indentation in generated code --- generator/generators/descriptorDecoder.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generator/generators/descriptorDecoder.mjs b/generator/generators/descriptorDecoder.mjs index 2921525d..3f144767 100644 --- a/generator/generators/descriptorDecoder.mjs +++ b/generator/generators/descriptorDecoder.mjs @@ -61,7 +61,7 @@ ${padding} ${type.nativeType}* data = (${type.nativeType}*) malloc(length * siz ${padding} for (unsigned int ii = 0; ii < length; ++ii) {`; // validate object if (type.isStructure) { - out += `\n${padding}if (!(array.Get(ii).IsObject())) { + out += `\n${padding} if (!(array.Get(ii).IsObject())) { ${padding} Napi::String type = Napi::String::New(value.Env(), "Type"); ${padding} Napi::String message = Napi::String::New(value.Env(), "Expected 'Object' for '${structure.externalName}'.'${member.name}'"); ${padding} device->throwCallbackError(type, message); @@ -71,7 +71,7 @@ ${padding} }`; // validate class else if (type.isObject) { let unwrapType = getExplortDeclarationName(type.nativeType); - out += `\n${padding}if (!(array.Get(ii).IsObject()) || !(array.Get(ii).As().InstanceOf(${unwrapType}::constructor.Value()))) { + out += `\n${padding} if (!(array.Get(ii).IsObject()) || !(array.Get(ii).As().InstanceOf(${unwrapType}::constructor.Value()))) { ${padding} Napi::String type = Napi::String::New(value.Env(), "Type"); ${padding} Napi::String message = Napi::String::New(value.Env(), "Expected '${unwrapType}' for '${structure.externalName}'.'${member.name}'"); ${padding} device->throwCallbackError(type, message); From 3453ba4732129b57b820a876fd78f2965aaabfff Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 12 Oct 2021 14:31:53 -0400 Subject: [PATCH 3/4] Remove unused memory allocation --- generator/generators/descriptorDecoder.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/generator/generators/descriptorDecoder.mjs b/generator/generators/descriptorDecoder.mjs index 3f144767..d8341f10 100644 --- a/generator/generators/descriptorDecoder.mjs +++ b/generator/generators/descriptorDecoder.mjs @@ -57,7 +57,6 @@ export function getDecodeStructureMember(structure, member, opts = DEFAULT_OPTS_ ${padding}{ ${padding} Napi::Array array = ${input.name}.Get("${member.name}").As(); ${padding} uint32_t length = array.Length(); -${padding} ${type.nativeType}* data = (${type.nativeType}*) malloc(length * sizeof(${type.nativeType})); ${padding} for (unsigned int ii = 0; ii < length; ++ii) {`; // validate object if (type.isStructure) { From 0d5a33c77873c69c1c2986a0e9dccc7880b02f64 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 12 Oct 2021 17:04:11 -0400 Subject: [PATCH 4/4] Fix GPUPipelineLayoutDescriptor constructor leak --- generator/generators/descriptorDecoder.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/generator/generators/descriptorDecoder.mjs b/generator/generators/descriptorDecoder.mjs index d8341f10..49a0f2ae 100644 --- a/generator/generators/descriptorDecoder.mjs +++ b/generator/generators/descriptorDecoder.mjs @@ -331,7 +331,10 @@ function getDestroyStructureMember(structure, member) { // no need to free } else if (type.isObject && type.isArray) { - // no need to free + out += ` + if (descriptor.${member.name}) { + free((void*) const_cast<${nativeType}*>(descriptor.${member.name})); + }`; } else if (type.isStructure && !type.isArray) { let exportType = getExplortDeclarationName(nativeType);