Javadoc for Package java.lang.foreign

Andrew Haley aph-open at littlepinkcloud.com
Thu Jun 2 18:27:49 UTC 2022


On 6/2/22 18:55, Maurizio Cimadamore wrote:
> Good catch, seems like something was lost in there. You need:
> 
> linker.defaultLookup().lookup("strlen").get()

That's not all: setUtf8String wants an offset.

This version runs:

     long doit() throws Throwable {
         var linker = Linker.nativeLinker();
         MethodHandle strlen = linker.downcallHandle(
              linker.defaultLookup().lookup("strlen").get(),
              FunctionDescriptor.of(ValueLayout.JAVA_LONG, ValueLayout.ADDRESS));

         try (var session = MemorySession.openConfined()) {
             var cString = MemorySegment.allocateNative(5 + 1, session);
             cString.setUtf8String(0, "Hello");
             long len = (long)strlen.invoke(cString); // 5
             return len;
         }
     }


-- 
Andrew Haley  (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
https://keybase.io/andrewhaley
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the panama-dev mailing list