Fix DqnFixedString len bug
This commit is contained in:
parent
6fc26c7bb8
commit
39d75ae5bf
@ -34,7 +34,7 @@ void DqnFixedString_Test()
|
|||||||
DqnFixedString<512> str = DQN_SLICE("hello world");
|
DqnFixedString<512> str = DQN_SLICE("hello world");
|
||||||
DQN_ASSERT(str.Sprintf("hello %s", "sailor"));
|
DQN_ASSERT(str.Sprintf("hello %s", "sailor"));
|
||||||
str += DQN_SLICE(".end");
|
str += DQN_SLICE(".end");
|
||||||
DQN_ASSERT(DqnStr_Cmp(str.str, "hello sailor.end") == 0);
|
DQN_ASSERTM(DqnStr_Cmp(str.str, "hello sailor.end") == 0, "Result: %s", str.str);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -65,4 +65,13 @@ void DqnFixedString_Test()
|
|||||||
|
|
||||||
Log(Status::Ok, "Operator +");
|
Log(Status::Ok, "Operator +");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
DqnFixedString<512> str = "localhost";
|
||||||
|
str.SprintfAppend(":%d", 16832);
|
||||||
|
str += "/json_rpc";
|
||||||
|
DQN_ASSERT(str.len == 24 && DqnStr_Cmp("localhost:16832/json_rpc", str.str) == 0);
|
||||||
|
|
||||||
|
Log(Status::Ok, "Copy constructor, sprintf, operator +=");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
24
dqn.h
24
dqn.h
@ -1856,10 +1856,10 @@ struct DqnFixedString
|
|||||||
DqnFixedString(DqnSlice<char> const &other) { this->len = DqnFixedString__Append(this->str, MAX, other.data, other.len); }
|
DqnFixedString(DqnSlice<char> const &other) { this->len = DqnFixedString__Append(this->str, MAX, other.data, other.len); }
|
||||||
DqnFixedString(DqnFixedString const &other) { if (this != &other) this->len = DqnFixedString__Append(this->str, MAX, other.str, other.len); }
|
DqnFixedString(DqnFixedString const &other) { if (this != &other) this->len = DqnFixedString__Append(this->str, MAX, other.str, other.len); }
|
||||||
|
|
||||||
DqnFixedString &operator+=(char const *other) { this->len = DqnFixedString__Append(this->str + this->len, MAX - this->len, other); return *this; }
|
DqnFixedString &operator+=(char const *other) { this->len += DqnFixedString__Append(this->str + this->len, MAX - this->len, other); return *this; }
|
||||||
DqnFixedString &operator+=(DqnSlice<char const> const &other) { this->len = DqnFixedString__Append(this->str + this->len, MAX - this->len, other.data, other.len); return *this; }
|
DqnFixedString &operator+=(DqnSlice<char const> const &other) { this->len += DqnFixedString__Append(this->str + this->len, MAX - this->len, other.data, other.len); return *this; }
|
||||||
DqnFixedString &operator+=(DqnSlice<char> const &other) { this->len = DqnFixedString__Append(this->str + this->len, MAX - this->len, other.data, other.len); return *this; }
|
DqnFixedString &operator+=(DqnSlice<char> const &other) { this->len += DqnFixedString__Append(this->str + this->len, MAX - this->len, other.data, other.len); return *this; }
|
||||||
DqnFixedString &operator+=(DqnFixedString const &other) { this->len = DqnFixedString__Append(this->str + this->len, MAX - this->len, other.str, other.len); return *this; }
|
DqnFixedString &operator+=(DqnFixedString const &other) { this->len += DqnFixedString__Append(this->str + this->len, MAX - this->len, other.str, other.len); return *this; }
|
||||||
|
|
||||||
DqnFixedString operator+ (char const *other) { DqnFixedString result = *this; result.len += DqnFixedString__Append(result.str + result.len, MAX - result.len, other); return result; }
|
DqnFixedString operator+ (char const *other) { DqnFixedString result = *this; result.len += DqnFixedString__Append(result.str + result.len, MAX - result.len, other); return result; }
|
||||||
DqnFixedString operator+ (DqnSlice<char const> const &other) { DqnFixedString result = *this; result.len += DqnFixedString__Append(result.str + result.len, MAX - result.len, other.data, other.len); return result; }
|
DqnFixedString operator+ (DqnSlice<char const> const &other) { DqnFixedString result = *this; result.len += DqnFixedString__Append(result.str + result.len, MAX - result.len, other.data, other.len); return result; }
|
||||||
@ -1885,7 +1885,7 @@ DqnFixedString__VSprintf(DqnFixedString<MAX> *me, char const *fmt, va_list argLi
|
|||||||
char *bufStart = me->str + bufOffset;
|
char *bufStart = me->str + bufOffset;
|
||||||
i32 const remainingSpace = static_cast<i32>((me->str + MAX) - bufStart);
|
i32 const remainingSpace = static_cast<i32>((me->str + MAX) - bufStart);
|
||||||
int result = Dqn_vsnprintf(bufStart, remainingSpace, fmt, argList);
|
int result = Dqn_vsnprintf(bufStart, remainingSpace, fmt, argList);
|
||||||
me->len = result;
|
me->len = bufOffset + result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6215,7 +6215,6 @@ wchar_t *DqnString::ToWChar(DqnMemAPI *api) const
|
|||||||
// return: The number of bytes written to dest
|
// return: The number of bytes written to dest
|
||||||
FILE_SCOPE int DqnFixedString__Append(char *dest, int destSize, char const *src, int len)
|
FILE_SCOPE int DqnFixedString__Append(char *dest, int destSize, char const *src, int len)
|
||||||
{
|
{
|
||||||
i32 realLen = 0;
|
|
||||||
if (len <= -1)
|
if (len <= -1)
|
||||||
{
|
{
|
||||||
char *ptr = dest;
|
char *ptr = dest;
|
||||||
@ -6229,17 +6228,16 @@ FILE_SCOPE int DqnFixedString__Append(char *dest, int destSize, char const *src,
|
|||||||
DQN_ASSERT(!src[0]);
|
DQN_ASSERT(!src[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
realLen = static_cast<i32>(ptr - dest);
|
len = static_cast<i32>(ptr - dest);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
realLen = DQN_MIN(len, destSize - 1);
|
DqnMem_Copy(dest, src, len);
|
||||||
DqnMem_Copy(dest, src, realLen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DQN_ASSERT(realLen <= destSize && realLen >= 0);
|
DQN_ASSERT(len < destSize && len >= 0);
|
||||||
dest[realLen] = 0;
|
dest[len] = 0;
|
||||||
return realLen;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
// #Dqn
|
// #Dqn
|
||||||
@ -6364,7 +6362,7 @@ TryNext:
|
|||||||
{
|
{
|
||||||
if (locate[-1] != '"' || locate[findPropertyLen] != '"')
|
if (locate[-1] != '"' || locate[findPropertyLen] != '"')
|
||||||
{
|
{
|
||||||
bufLen -= ((locate - buf) + findPropertyLen);
|
bufLen -= static_cast<i32>(((locate - buf) + findPropertyLen));
|
||||||
buf = locate + findPropertyLen;
|
buf = locate + findPropertyLen;
|
||||||
goto TryNext;
|
goto TryNext;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user