From 693a2008a92e6456a9e2fe59f8ec4b9a82fa721a Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sun, 29 Dec 2019 18:11:22 +0100 Subject: [PATCH] Unknown opcodes were truncated by the C wrapper Thanks @alcomposer for the patch Fixes #18 --- src/sfizz/sfizz_wrapper.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/sfizz/sfizz_wrapper.cpp b/src/sfizz/sfizz_wrapper.cpp index cdf2904f..74e04fc4 100644 --- a/src/sfizz/sfizz_wrapper.cpp +++ b/src/sfizz/sfizz_wrapper.cpp @@ -222,20 +222,19 @@ char* sfizz_get_unknown_opcodes(sfizz_synth_t* synth) const auto unknownOpcodes = self->getUnknownOpcodes(); int totalLength = 0; for (auto& opcode: unknownOpcodes) - totalLength += opcode.length(); + totalLength += opcode.length() + 1; if (totalLength == 0) return nullptr; - auto opcodeList = (char *)std::malloc(totalLength + unknownOpcodes.size()); + auto opcodeList = (char *)std::malloc(totalLength); auto listIterator = opcodeList; - for (auto& opcode: unknownOpcodes) { + for (auto& opcode : unknownOpcodes) { std::copy(opcode.begin(), opcode.end(), listIterator); listIterator += opcode.length(); - *listIterator++ = ','; + *listIterator++ = (opcode == *unknownOpcodes.rbegin()) ? '\0' : ','; } - opcodeList[totalLength] = '\0'; return opcodeList; }