1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2026-02-05 11:13:51 +00:00

1. Fixed bug where the last result data length could include the NULL terminator if the input string length was too long.

2. Updated DB calls, to Get/Put will truncate the NULL terminator if it is specified in the key name
3. Updated COMPACT, so keynames will be fixed if it contains a NULL terminator
This commit is contained in:
Bryan Roe
2019-01-17 18:05:26 -08:00
parent 0b36dd07fe
commit ba28e98ef7
2 changed files with 10 additions and 0 deletions

View File

@@ -295,6 +295,7 @@ __EXPORT_TYPE int ILibSimpleDataStore_PutEx(ILibSimpleDataStore dataStore, char*
ILibSimpleDataStore_TableEntry *entry;
if (root == NULL) return 0;
if (keyLen > 1 && key[keyLen - 1] == 0) { keyLen -= 1; }
entry = (ILibSimpleDataStore_TableEntry*)ILibHashtable_Get(root->keyTable, NULL, key, keyLen);
ILibSimpleDataStore_SHA384(value, valueLen, hash); // Hash the value
@@ -322,6 +323,7 @@ __EXPORT_TYPE int ILibSimpleDataStore_GetEx(ILibSimpleDataStore dataStore, char*
ILibSimpleDataStore_TableEntry *entry;
if (root == NULL) return 0;
if (keyLen > 1 && key[keyLen - 1] == 0) { keyLen -= 1; }
entry = (ILibSimpleDataStore_TableEntry*)ILibHashtable_Get(root->keyTable, NULL, key, keyLen);
if (entry == NULL) return 0; // If there is no in-memory entry for this key, return zero now.
@@ -393,6 +395,13 @@ void ILibSimpleDataStore_Compact_EnumerateSink(ILibHashtable sender, void *Key1,
if (root == NULL) return;
if (root->error != 0) return; // There was an error, ABORT!
if (Key2Len > 1)
{
if (Key2[Key2Len - 1] == 0)
{
Key2Len -= 1;
}
}
offset = ILibSimpleDataStore_WriteRecord(compacted, Key2, Key2Len, NULL, entry->valueLength, entry->valueHash);
while (bytesLeft > 0)
{