Skip to content

Commit 5e65388

Browse files
committed
> Fix conversion issue for Linux and macOS
1 parent e181c0f commit 5e65388

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

TorrentStreamLibrary/LibraryInterface.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,21 @@ public static class LibraryInterface {
1111

1212
public delegate void CallbackFullDownloadStarted ( int id, nint downloadPath, bool isAdded );
1313

14+
private static string GetStringFromPointer ( nint pointer ) {
15+
if ( RuntimeInformation.IsOSPlatform ( OSPlatform.Linux ) || RuntimeInformation.IsOSPlatform ( OSPlatform.OSX ) ) return Marshal.PtrToStringUTF8 ( pointer ) ?? "";
16+
17+
return Marshal.PtrToStringUni ( pointer ) ?? "";
18+
}
19+
1420
[UnmanagedCallersOnly ( EntryPoint = "initializetorrentstream" )]
1521
public static int initializetorrentstream ( int port, IntPtr downloadPath, IntPtr listenAddress, bool showui, nint callbackPointer ) => InitializeTorrentStreamInternal ( port, downloadPath, listenAddress, showui, callbackPointer );
1622
public static int InitializeTorrentStreamInternal ( int port, IntPtr downloadPathPointer, IntPtr listenAddressPointer, bool showui, nint callbackPointer ) {
1723
if ( port <= 0 || port > 65534 ) return 1;
1824

19-
var downloadPath = Marshal.PtrToStringUni ( downloadPathPointer );
25+
var downloadPath = GetStringFromPointer ( downloadPathPointer );
2026
if ( string.IsNullOrEmpty ( downloadPath ) ) return 2;
2127

22-
var listenAddress = Marshal.PtrToStringUni ( listenAddressPointer );
28+
var listenAddress = GetStringFromPointer ( listenAddressPointer );
2329

2430
GlobalConfiguration.Port = port;
2531
GlobalConfiguration.BaseFolder = downloadPath;
@@ -65,7 +71,7 @@ public static void TorrentStreamClearAllInternal ( nint callback ) {
6571
public static void torrentstreamclearonlytorrent ( nint downloadPathPointer, nint callback ) => TorrentStreamClearOnlyTorrentInternal ( downloadPathPointer, callback );
6672
public static void TorrentStreamClearOnlyTorrentInternal ( nint downloadPathPointer, nint callback ) {
6773
var callbackDelegate = Marshal.GetDelegateForFunctionPointer<CallbackUpdateTorrents> ( callback );
68-
var downloadPath = Marshal.PtrToStringUni ( downloadPathPointer );
74+
var downloadPath = GetStringFromPointer ( downloadPathPointer );
6975
if ( string.IsNullOrEmpty ( downloadPath ) ) return;
7076

7177
Task.Run (

0 commit comments

Comments
 (0)