Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8154161

Webkit: Conversion from string literal loses const qualifier

XMLWordPrintable

    • web
    • x86
    • windows_8

        FULL PRODUCT VERSION :
        FX9

        ADDITIONAL OS VERSION INFORMATION :
        Win8.1

        A DESCRIPTION OF THE PROBLEM :
        In web/src/main/native/Source/WebCore/platform/java/api/BackForwardListJava.cpp, in the method:

        static jmethodID initMethod(JNIEnv* env, jclass cls, char* name, const char* signature)

        With VS2013+update5, Microsoft C++ compiler raises error "C2664: cannot convert 'const char *' to 'char *' " when "/Zc:strictStrings" is set.

        This bug is similar to bug https://bugs.openjdk.java.net/browse/JDK-8090061.








        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Build FX with VS2013+up5 and enable webkit build with COMPILE_WEBKIT=true.


        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        ..\..\..\..\src\main\native\Source\WebCore\platform\java\api\BackForwardListJava.cpp(46) : error C2664: 'jmethodID initMethod(JNIEnv *,jclass,char *,const char
        *)' : cannot convert argument 3 from 'const char [7]' to 'char *'
                Conversion from string literal loses const qualifier (see /Zc:strictStrings)
        ..\..\..\..\src\main\native\Source\WebCore\platform\java\api\BackForwardListJava
        .cpp(87) : error C2664: 'jmethodID initMethod(JNIEnv *,jclass,char *,const char*)' : cannot convert argument 3 from 'const char [18]' to 'char *'
                Conversion from string literal loses const qualifier (see /Zc:strictStrings)
        ..\..\..\..\src\main\native\Source\WebCore\platform\java\api\BackForwardListJava.cpp(98) : error C2664: 'jmethodID initMethod(JNIEnv *,jclass,char *,const char
        *)' : cannot convert argument 3 from 'const char [20]' to 'char *'
                Conversion from string literal loses const qualifier (see /Zc:strictStrings)
        ..\..\..\..\src\main\native\Source\WebCore\platform\java\api\BackForwardListJava
        .cpp(311) : error C2664: 'jmethodID initMethod(JNIEnv *,jclass,char *,const char *)' : cannot convert argument 3 from 'const char [14]' to 'char *'
                Conversion from string literal loses const qualifier (see /Zc:strictStrings)
        NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0
        \VC\BIN\amd64\cl.EXE"' : return code '0x2'
        Stop.
        NMAKE : fatal error U1077: '(' : return code '0x2'
        Stop.
        NMAKE : fatal error U1077: 'cd' : return code '0x2'
        Stop.
        :web:compileNativeWin FAILED
        --

        REPRODUCIBILITY :
        This bug can be reproduced always.

        CUSTOMER SUBMITTED WORKAROUND :
        The following patch fixes this problem.(Tested on win, linux and MacOSx)


        diff --git a/modules/web/src/main/native/Source/WebCore/platform/java/api/BackForwardListJava.cpp b/modules/web/src/main/native/Source/WebCore/platform/java/api/BackForwardListJava.cpp
        --- a/modules/web/src/main/native/Source/WebCore/platform/java/api/BackForwardListJava.cpp
        +++ b/modules/web/src/main/native/Source/WebCore/platform/java/api/BackForwardListJava.cpp
        @@ -34,7 +34,7 @@
             return static_cast<HistoryItem*>(jlong_to_ptr(jitem));
         }
         
        -static jmethodID initMethod(JNIEnv* env, jclass cls, char* name, const char* signature)
        +static jmethodID initMethod(JNIEnv* env, jclass cls, const char* name, const char* signature)
         {
             jmethodID mid = env->GetMethodID(cls, name, signature);
             ASSERT(mid);

              mbilla Murali Billa
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: