Important update:
- LiteProtocolCore: - Bug fix: NewCommandStr() cannot shrink CommandStr on CreateCommand - Bug fix: AppendParam() cannot pass NULL string value
This commit is contained in:
@@ -196,6 +196,7 @@ bool CLiteProtocol::NewCommandStr()
|
||||
free( CommandStr );
|
||||
CommandStr = NULL;
|
||||
BufferSize = 0;
|
||||
Length = 0;
|
||||
};
|
||||
IncCommandStr( 14 );
|
||||
|
||||
@@ -346,9 +347,18 @@ bool CLiteProtocol::AppendParam( const char * pString, const int pLength )
|
||||
int StringLen;
|
||||
|
||||
// Check if valid
|
||||
if (!pString)
|
||||
return false;
|
||||
if (!pLength || (!pString && (pLength == -1)))
|
||||
{
|
||||
// Increase string length if required
|
||||
StringLen = 0;
|
||||
IncCommandStr( Length + 1 );
|
||||
|
||||
// Copy string
|
||||
CommandStr[CurrPos+StringLen] = Separator;
|
||||
Length += 1; // Allow for separator character
|
||||
}
|
||||
else
|
||||
{
|
||||
// Increase string length if required
|
||||
StringLen = (pLength < 0)? strlen(pString) : pLength;
|
||||
IncCommandStr( Length + StringLen+1 );
|
||||
@@ -357,10 +367,11 @@ bool CLiteProtocol::AppendParam( const char * pString, const int pLength )
|
||||
memcpy( &CommandStr[CurrPos], (char*)pString, StringLen );
|
||||
CommandStr[CurrPos+StringLen] = Separator;
|
||||
Length = Length + StringLen + 1; // Allow for separator character
|
||||
}
|
||||
|
||||
// Move pointer to end and set end char
|
||||
CurrParam++;
|
||||
CurrPos = CurrPos + StringLen + 1; // Allow for separator character
|
||||
CurrPos += StringLen + 1; // Allow for separator character
|
||||
CommandStr[CurrPos] = EndChar;
|
||||
|
||||
// Update references
|
||||
|
||||
@@ -88,8 +88,12 @@ class CLiteProtocol
|
||||
int * FromLen = NULL, int * ToLen = NULL, int * CommandLen = NULL ); // Read core parameters from structured command: To, From & Command
|
||||
|
||||
// Read structured Command string
|
||||
inline int GetNoOfDataParams() { return (NoOfParams - 3); }; // Return number for data (additional) params
|
||||
inline bool GotoDataParam( int ParamNo ) { return (GotoParam( ParamNo+3 )); }; // Goto specific data (additional) param
|
||||
inline int GetNoOfDataParams() { // Return number for data (additional) params
|
||||
return (NoOfParams - 3);
|
||||
};
|
||||
inline bool GotoDataParam( int ParamNo ) { // Goto specific data (additional) param
|
||||
return (GotoParam( ParamNo+3 ));
|
||||
};
|
||||
inline char const * GetDataParamNo( int ParamNo, char ** pString = NULL, int * pLength = NULL ) { // Read specific data param (by number)
|
||||
return (GetParamNo( ParamNo+3, pString, pLength ));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user