Hi Jc,

This seems okay to me. Only minor query is why you do the +1 (presumably for terminating NUL) on the return_len instead of len ?

Thanks,
David

On 13/11/2018 7:11 AM, JC Beyler wrote:
Hi all,

I created this change instead:
http://cr.openjdk.java.net/~jcbeyler/8213622/webrev.00/ <http://cr.openjdk.java.net/%7Ejcbeyler/8213622/webrev.00/>

It removes the sprintf calls for strlen and strncpy calls. I checked that the code works if I force an error on GetObjectClass for example:

FATAL ERROR in native method: GetObjectClass : Return is NULL
at nsk.share.gc.lock.CriticalSectionTimedLocker.criticalSection(CriticalSectionTimedLocker.java:47) at nsk.share.gc.lock.CriticalSectionLocker$1.run(CriticalSectionLocker.java:56)
at nsk.share.gc.lock.jniref.JNILocalRefLocker.criticalNative(Native Method)
at nsk.share.gc.lock.jniref.JNILocalRefLocker.criticalSection(JNILocalRefLocker.java:44) at nsk.share.gc.lock.CriticalSectionTimedLocker.criticalSection(CriticalSectionTimedLocker.java:47) at nsk.share.gc.lock.CriticalSectionLocker$1.run(CriticalSectionLocker.java:56)
at java.lang.Thread.run(java.base@12-internal/Thread.java:835)

I'll pass it through the submit repo if this looks like a better fix.

Let me know what you think,
Jc

On Sun, Nov 11, 2018 at 10:38 PM JC Beyler <jcbey...@google.com <mailto:jcbey...@google.com>> wrote:

    Hi all,

    If I've caught up with the conversation, it sounds like:
       - My code breaks VS2013 build but that soon that won't be supported
       - We can't just do a renaming macro due to my use of sprintf with
    an empty buffer
           - So we need to either do what was suggested by Kim:
    "That first snprintf call could be rewritten using several calls to
    strlen to calculate the needed size in some different manner. The
    later call could also be rewritten to use several calls to strcpy
    rather than snprintf."
              Or something to that effect

    I can work on a fix that will handle this if we want, I'm just not
    sure if that's the path that is being recommended here though. It
    seems that in this particular case, it is not really hard to fix the
    code for now; the day VS2013 is no longer build-able by other pieces
    of code we can come back to this solution. To be honest, the reason
    this is like this is due to not being able to have C++ strings when
    I tried initially. The day we can have those, then this code can
    become even simpler.

    Let me know what you think and would prefer,
    Jc

    On Sun, Nov 11, 2018 at 9:01 PM David Holmes
    <david.hol...@oracle.com <mailto:david.hol...@oracle.com>> wrote:

        Hi Michal,

        On 12/11/2018 2:18 PM, Michal Vala wrote:
         >
         >
         > On 11/10/18 12:07 AM, David Holmes wrote:
         >> cc'ing JC Beyler as this was his code.
         >>
         >> On 10/11/2018 4:35 AM, Kim Barrett wrote:
         >>>> On Nov 9, 2018, at 11:43 AM, Michal Vala <mv...@redhat.com
        <mailto:mv...@redhat.com>> wrote:
         >>>>
         >>>> Hi,
         >>>>
         >>>> please review following patch fixing build failure on
        Windows with
         >>>> VS2013 toolchain.
         >>
         >> Not sure we're still supporting VS2013 ... ??
         >
         > Minimum accepted by configure is 2010. 2013 is 2nd in
        priorities after
         > 2017. It has `VS_SUPPORTED_2013=false` though, but why not
        keep it
         > buildable?

        That depends on how painful it is to achieve that. As Kim has
        explained
        the suggested fix may allow building but it isn't correct.

        And we may not be able to keep this ability to build with VS2013
        going
        forward.

        Thanks,
        David


         >>
         >>>>
         >>>>
        http://cr.openjdk.java.net/~mvala/jdk/jdk/JDK-8213622/webrev.00/
        <http://cr.openjdk.java.net/%7Emvala/jdk/jdk/JDK-8213622/webrev.00/>
         >>>
         >>> The failure is in a hotspot test.  It should be using
        os::snprintf.
         >>
         >> Tests don't have access to os::snprintf. The test is just
        C++ code.
         >>
         >> Cheers,
         >> David
         >>
         >>
         >



--
    Thanks,
    Jc



--

Thanks,
Jc

Reply via email to