]> granicus.if.org Git - clang/commitdiff
Link against the correct ObjC string class (__CFConstantStringClassReference) and...
authorSteve Naroff <snaroff@apple.com>
Sat, 15 Mar 2008 01:36:04 +0000 (01:36 +0000)
committerSteve Naroff <snaroff@apple.com>
Sat, 15 Mar 2008 01:36:04 +0000 (01:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48384 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteTest.cpp

index 3ada2b88de533071a889e7b4186c40d31babcd5f..e947f243f21495cfca140ccf6b4f41431f0817e5 100644 (file)
@@ -327,8 +327,8 @@ void RewriteTest::Initialize(ASTContext &context) {
   S += "  long length;\n";
   S += "  __NSConstantStringImpl(char *s, long l) :\n";
   S += "  flags(0), str(s), length(l)\n";
-  S += "    { extern struct objc_object *_NSConstantStringClassReference;\n";
-  S += "      isa = _NSConstantStringClassReference; }\n";
+  S += "    { extern int __CFConstantStringClassReference[];\n";
+  S += "      isa = (struct objc_object *)__CFConstantStringClassReference;}\n";
   S += "};\n";
   S += "#define __NSCONSTANTSTRINGIMPL\n";
   S += "#endif\n";
@@ -1737,9 +1737,8 @@ Stmt *RewriteTest::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {
   Exp->getString()->printPretty(prettyBuf);
   StrObjDecl += prettyBuf.str();
   StrObjDecl += ",";
-  // FIXME: This length isn't correct. It doesn't include escape characters
-  // inserted by the pretty printer.
-  StrObjDecl += utostr(Exp->getString()->getByteLength()) + ");\n";
+  // The minus 2 removes the begin/end double quotes.
+  StrObjDecl += utostr(prettyBuf.str().size()-2) + ");\n";
   InsertText(SourceLocation::getFileLoc(MainFileID, 0), 
              StrObjDecl.c_str(), StrObjDecl.size());