zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 030672ab8f58fc848fcff87713b57e392e3b56e0
parent e10d74a7780263747c4340a78c1286b453cd4785
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Sat, 15 Jul 2017 11:30:20 -0400

Fix Errors In Schema's 'default' Field

Diffstat:
Msrc/Effects/Effect.h | 2+-
Msrc/Misc/Schema.cpp | 25+++++++++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/Effects/Effect.h b/src/Effects/Effect.h @@ -45,7 +45,7 @@ #endif #define rEffParCommon(pname, rshort, rdoc, idx, ...) \ -{STRINGIFY(pname) ":", rProp(parameter) rLinear(0,127) \ +{STRINGIFY(pname) "::i", rProp(parameter) rLinear(0,127) \ rShort(rshort) rDoc(rdoc), \ 0, \ [](const char *msg, rtosc::RtData &d) \ diff --git a/src/Misc/Schema.cpp b/src/Misc/Schema.cpp @@ -11,6 +11,30 @@ void walk_ports2(const rtosc::Ports *base, namespace zyn { +static const char *escape_string(const char *msg) +{ + if(!msg) + return NULL; + char *out = (char*)malloc(strlen(msg)*2+1); + memset(out, 0, strlen(msg)*2+1); + char *itr = out; + while(*msg) { + if(*msg == '"') { + *itr++ = '\\'; + *itr++ = '\"'; + } else if(*msg == '\\') { + *itr++ = '\\'; + *itr++ = '\\'; + } else { + *itr++ = *msg; + } + + msg++; + + } + return out; +} + /* * root : * - 'parameters' : [parameter...] @@ -181,6 +205,7 @@ void dump_param_cb(const rtosc::Port *p, const char *full_name, const char*, const char *min = meta["min"]; const char *max = meta["max"]; const char *def = meta["default"]; + def = escape_string(def); for(auto m:meta) { if(strlen(m.title) >= 5 && !memcmp(m.title, "map ", 4)) {