diff --git a/libmaxsi/readparamstring.cpp b/libmaxsi/readparamstring.cpp index 5874f57e..9f3fec44 100644 --- a/libmaxsi/readparamstring.cpp +++ b/libmaxsi/readparamstring.cpp @@ -22,13 +22,20 @@ *******************************************************************************/ -#include -#include #include +#include #include #include -using namespace Maxsi; +static char* Substring(const char* src, size_t offset, size_t length) +{ + size_t srclen = strlen(src); + char* dest = new char[length + 1]; + if ( !dest ) { return NULL; } + memcpy(dest, src + offset, length * sizeof(char)); + dest[length] = 0; + return dest; +} extern "C" bool ReadParamString(const char* str, ...) { @@ -44,9 +51,9 @@ extern "C" bool ReadParamString(const char* str, ...) if ( !str[namelen] ) { errno = EINVAL; goto cleanup; } if ( varlen < namelen ) { errno = EINVAL; goto cleanup; } size_t valuelen = varlen - 1 /*=*/ - namelen; - char* name = String::Substring(str, 0, namelen); + char* name = Substring(str, 0, namelen); if ( !name ) { goto cleanup; } - char* value = String::Substring(str, namelen+1, valuelen); + char* value = Substring(str, namelen+1, valuelen); if ( !value ) { delete[] name; goto cleanup; } va_start(args, str); while ( (keyname = va_arg(args, const char*)) )