diff --git a/ArmaRAMDb_x64.dll b/ArmaRAMDb_x64.dll index 4b0ea1b..4ab3864 100644 Binary files a/ArmaRAMDb_x64.dll and b/ArmaRAMDb_x64.dll differ diff --git a/ArmaRAMDb_x64.so b/ArmaRAMDb_x64.so index 01faf2f..f58ac83 100644 Binary files a/ArmaRAMDb_x64.so and b/ArmaRAMDb_x64.so differ diff --git a/extension/bin/Release/net8.0/linux-x64/publish/ArmaRAMDb_x64.so b/extension/bin/Release/net8.0/linux-x64/publish/ArmaRAMDb_x64.so index 01faf2f..f58ac83 100644 Binary files a/extension/bin/Release/net8.0/linux-x64/publish/ArmaRAMDb_x64.so and b/extension/bin/Release/net8.0/linux-x64/publish/ArmaRAMDb_x64.so differ diff --git a/extension/bin/Release/net8.0/win-x64/publish/ArmaRAMDb_x64.dll b/extension/bin/Release/net8.0/win-x64/publish/ArmaRAMDb_x64.dll index 4b0ea1b..4ab3864 100644 Binary files a/extension/bin/Release/net8.0/win-x64/publish/ArmaRAMDb_x64.dll and b/extension/bin/Release/net8.0/win-x64/publish/ArmaRAMDb_x64.dll differ diff --git a/extension/src/ListStore.cs b/extension/src/ListStore.cs index 0f6d656..9143341 100644 --- a/extension/src/ListStore.cs +++ b/extension/src/ListStore.cs @@ -60,15 +60,19 @@ namespace ArmaRAMDb } public static async Task ListRangeAsync(string listName, string startIndex, string endIndex, string function, string uniqueId, string entity = null, string call = "false", int bufferSize = Main.ARDB_BUFFERSIZE) - { + { await Task.Yield(); - + if (_lists.TryGetValue(listName, out var list)) { lock (list) { int start = int.Parse(startIndex); int end = int.Parse(endIndex); + + if (end == -1) + end = list.Count - 1; + start = Math.Max(0, start); end = Math.Min(list.Count - 1, end); @@ -80,8 +84,18 @@ namespace ArmaRAMDb Main.Log($"ListRange: {listName} - StartIndex: {start} - EndIndex: {end} - Count: {count}", "debug"); Utils.CheckByteCount(uniqueId, $"[{data}]", function, entity, Convert.ToBoolean(call), bufferSize); } + else + { + Main.Log($"ListRange: {listName} - Invalid range or empty result", "debug"); + Utils.CheckByteCount(uniqueId, "[]", function, entity, Convert.ToBoolean(call), bufferSize); + } } } + else + { + Main.Log($"ListRange: {listName} - List not found", "debug"); + Utils.CheckByteCount(uniqueId, "[]", function, entity, Convert.ToBoolean(call), bufferSize); + } } public static async Task ListSetAsync(string listName, string index, string value)