Browse Source

* save original widestring manager on entry and restore it on exit, so that
units finalized afterwards won't try to use the finalized cwstring
manager (mantis #26252)

git-svn-id: trunk@27842 -

Jonas Maebe 11 years ago
parent
commit
bee20f79f0
1 changed files with 8 additions and 1 deletions
  1. 8 1
      rtl/unix/cwstring.pp

+ 8 - 1
rtl/unix/cwstring.pp

@@ -1029,11 +1029,15 @@ begin
 end;
 {$endif FPC_HAS_CPSTRING}
 
+var
+  OrgWideStringManager: TUnicodeStringManager;
+
 Procedure SetCWideStringManager;
 Var
   CWideStringManager : TUnicodeStringManager;
 begin
-  CWideStringManager:=widestringmanager;
+  GetUnicodeStringManager(OrgWideStringManager);
+  CWideStringManager:=OrgWideStringManager;
   With CWideStringManager do
     begin
       Wide2AnsiMoveProc:=@Wide2AnsiMove;
@@ -1106,4 +1110,7 @@ finalization
   { unload iconv library }
   if iconvlib<>0 then
     FreeLibrary(iconvlib);
+  { restore previous (probably default) widestring manager so that subsequent calls
+    into the widestring manager won't trigger the finalized functionality }
+  SetWideStringManager(OrgWideStringManager);
 end.