Fix Unix issue with string address below 64kB (#7183)
authorJan Vorlicek <janvorli@microsoft.com>
Wed, 14 Sep 2016 14:59:28 +0000 (16:59 +0200)
committerJan Kotas <jkotas@microsoft.com>
Wed, 14 Sep 2016 14:59:28 +0000 (07:59 -0700)
This change fixes a problem that has started to occur in the ARM32 Linux CI
tests. A string located below 64KB in the address space is passed to the
StringObject::StringInitCharHelper and the code throws an exception since
on Windows, values below 64kB represent atoms and not strings.
This check should not be done for FEATURE_PAL though.

src/vm/object.cpp

index c4fbc40c3309d4fd2e6d84de8c763fecc6acc926..531c0015f2b28bae09dfc675330dd29a0529abed 100644 (file)
@@ -2121,9 +2121,11 @@ STRINGREF __stdcall StringObject::StringInitCharHelper(LPCSTR pszSource, int len
     if (!pszSource || length == 0) {
         return StringObject::GetEmptyString();
     }
+#ifndef FEATURE_PAL
     else if ((size_t)pszSource < 64000) {
         COMPlusThrow(kArgumentException, W("Arg_MustBeStringPtrNotAtom"));
     }    
+#endif // FEATURE_PAL
 
     // Make sure we can read from the pointer.
     // This is better than try to read from the pointer and catch the access violation exceptions.