[ros-bugs] [Bug 3548] Strawberry Perl 5.10.0.1 cannot open perl script due to unknown error 123

ReactOS.Bugzilla at www.reactos.org ReactOS.Bugzilla at www.reactos.org
Wed Jul 23 02:03:30 CEST 2008


http://www.reactos.org/bugzilla/show_bug.cgi?id=3548





--- Comment #2 from jeanmichel.123 <jeanmichel.123 at free.Fr>  2008-07-23 02:03:30 CET ---
(In reply to comment #1)
> After replacing msvcrt.dll by a compatible one, the bug change:
> it is no more «cannot open perl script due to unknown error 123»
> but: «strxfrm() gets absurd.»
> 
> Several hypothesis are possible:
> + it is a random bug
> + the bug depends from a previous action
> + there is two bugs: the error 123 in msvcrt.dll and the strxfrm elsewhere.


The strxfrm issue is more probably an incompatibilty with ReactOS kernel.dll
and ms compatible msvcrt.dll.
relative to one of the following function exported by kernel.dll:
  MultiByteToWideChar
  WideCharToMultiByte
  MultiByteToWideChar
  WideCharToMultiByte
  GetCPInfo
  GetACP
  GetOEMCP
  LCMapStringA
  LCMapStringW
  CompareStringA
  CompareStringW
  LCMapStringA
  LCMapStringW
or less probably
  FreeEnvironmentStringsA
  FreeEnvironmentStringsW
  GetEnvironmentStrings
  GetEnvironmentStringsW
  GetStringTypeA
  GetStringTypeW
or less probably
  IsValidLocale
  GetLocaleInfoA
  EnumSystemLocalesA
  GetLocaleInfoW
  IsValidCodePage

the perl test on which compatible msvcrt.dll fails is (based on perl 5.8):

{
          /*  2: at most so many chars ('a', 'b'). */
          /* 50: surely no system expands a char more. */
#define XFRMBUFSIZE  (2 * 50)
          char xbuf[XFRMBUFSIZE];
          Size_t fa = strxfrm(xbuf, "a",  XFRMBUFSIZE);
          Size_t fb = strxfrm(xbuf, "ab", XFRMBUFSIZE);
          SSize_t mult = fb - fa;
          if (mult < 1)
              Perl_croak(aTHX_ "strxfrm() gets absurd");
}

Looking at the ReactOS source code of strxfrm shows it is only planned to work
as posix, but with no localization:

#else
size_t strxfrm( char *dest, const char *src, size_t n )
{
        int ret = LCMapStringA(


This probably mean some unimplemented function in LCMapStringA from kernel.dll:
./dll/win32/kernel32/misc/lang.c
 * @unimplemented */  int STDCALL LCMapStringA (


-- 
Configure bugmail: http://www.reactos.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the Ros-bugs mailing list