@@ -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