Browse Source

Fixed GetString on netstandard2

tags/0.9.1
Martin Evans 2 years ago
parent
commit
47e4fcef2a
2 changed files with 16 additions and 3 deletions
  1. +12
    -1
      LLama/Extensions/EncodingExtensions.cs
  2. +4
    -2
      LLama/Native/SafeLlamaModelHandle.cs

+ 12
- 1
LLama/Extensions/EncodingExtensions.cs View File

@@ -16,7 +16,7 @@ internal static class EncodingExtensions
return GetCharCountImpl(encoding, bytes);
}
#elif !NET6_0_OR_GREATER && !NETSTANDARD2_1_OR_GREATER
#error Target framework not supported!
#error Target framework not supported!
#endif

internal static int GetCharsImpl(Encoding encoding, ReadOnlySpan<byte> bytes, Span<char> output)
@@ -47,4 +47,15 @@ internal static class EncodingExtensions
}
}
}

internal static string GetStringFromSpan(this Encoding encoding, ReadOnlySpan<byte> bytes)
{
unsafe
{
fixed (byte* bytesPtr = bytes)
{
return encoding.GetString(bytesPtr, bytes.Length);
}
}
}
}

+ 4
- 2
LLama/Native/SafeLlamaModelHandle.cs View File

@@ -3,6 +3,8 @@ using System.Buffers;
using System.Collections.Generic;
using System.Text;
using LLama.Exceptions;
using LLama.Extensions;
using EncodingExtensions = LLama.Extensions.EncodingExtensions;

namespace LLama.Native
{
@@ -259,12 +261,12 @@ namespace LLama.Native
var keyBytes = MetadataKeyByIndex(i, dest.AsMemory());
if (keyBytes == null)
continue;
var key = Encoding.UTF8.GetString(keyBytes.Value.Span);
var key = Encoding.UTF8.GetStringFromSpan(keyBytes.Value.Span);

var valBytes = MetadataValueByIndex(i, dest.AsMemory());
if (valBytes == null)
continue;
var val = Encoding.UTF8.GetString(valBytes.Value.Span);
var val = Encoding.UTF8.GetStringFromSpan(valBytes.Value.Span);

result[key] = val;
}


Loading…
Cancel
Save