diff options
Diffstat (limited to 'externals/grill/flext/source/flxlet.cpp')
-rwxr-xr-x | externals/grill/flext/source/flxlet.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/externals/grill/flext/source/flxlet.cpp b/externals/grill/flext/source/flxlet.cpp index 2804bae3..e47a92e3 100755 --- a/externals/grill/flext/source/flxlet.cpp +++ b/externals/grill/flext/source/flxlet.cpp @@ -23,8 +23,9 @@ flext_base::xlet::xlet(type t,const char *d): { if(d) { int ln = strlen(d); - desc = new char[ln]; - strncpy(desc,d,ln); + desc = new char[ln+1]; + memcpy(desc,d,ln); + desc[ln] = 0; } else desc = NULL; } @@ -45,9 +46,18 @@ void flext_base::AddXlet(xlet::type tp,int mult,const char *desc,xlet *&root) } } -void flext_base::DescXlet(int ix,const char *desc,xlet *&root) +void flext_base::DescXlet(int ix,const char *d,xlet *&root) { - post("%s - sorry, not implemented",thisName()); + xlet *xi = root; + for(int i = 0; xi && i < ix; xi = xi->nxt,++i) {} + + if(xi) { + if(xi->desc) delete[] xi->desc; + int ln = strlen(d); + xi->desc = new char[ln+1]; + memcpy(xi->desc,d,ln); + xi->desc[ln] = 0; + } } unsigned long flext_base::XletCode(xlet::type tp,...) |