2
0
mirror of synced 2025-02-23 14:58:12 +00:00

bind: use 0 instead of nil for the jclass zero value

Go 1.10 was supposed to change the jclass JNI type to map to Go
uintptr, but failed to map the Android NDK definition until
recently.

There was a single instance in the reverse binding generator that
compared jclass values to nil. Change it to use 0 and cast the
jclass value to uintptr to ensure compatibility with older Go
releases.

Change-Id: Ifa22ed2db556220b7dfd0076b004bd8930219e08
Reviewed-on: https://go-review.googlesource.com/124915
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
This commit is contained in:
Elias Naur 2018-07-19 09:10:34 +02:00
parent c7f1239863
commit 371a4e8cb7
3 changed files with 28 additions and 27 deletions

View File

@ -539,7 +539,8 @@ func (g *ClassGen) genGo(cls *java.Class) {
g.Printf("cls := C.CString(%q)\n", strings.Replace(cls.FindName, ".", "/", -1)) g.Printf("cls := C.CString(%q)\n", strings.Replace(cls.FindName, ".", "/", -1))
g.Printf("clazz := C.go_seq_find_class(cls)\n") g.Printf("clazz := C.go_seq_find_class(cls)\n")
g.Printf("C.free(unsafe.Pointer(cls))\n") g.Printf("C.free(unsafe.Pointer(cls))\n")
g.Printf("if clazz == nil {\n") // Before Go 1.11 clazz was a pointer value, an uintptr after.
g.Printf("if uintptr(clazz) == 0 {\n")
g.Printf(" return\n") g.Printf(" return\n")
g.Printf("}\n") g.Printf("}\n")
g.Printf("class_%s = clazz\n", cls.JNIName) g.Printf("class_%s = clazz\n", cls.JNIName)

View File

@ -624,7 +624,7 @@ func init_java_lang_Runnable() {
cls := C.CString("java/lang/Runnable") cls := C.CString("java/lang/Runnable")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Runnable = clazz class_java_lang_Runnable = clazz
@ -663,7 +663,7 @@ func init_java_io_InputStream() {
cls := C.CString("java/io/InputStream") cls := C.CString("java/io/InputStream")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_io_InputStream = clazz class_java_io_InputStream = clazz
@ -761,7 +761,7 @@ func init_java_util_concurrent_Future() {
cls := C.CString("java/util/concurrent/Future") cls := C.CString("java/util/concurrent/Future")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_concurrent_Future = clazz class_java_util_concurrent_Future = clazz
@ -843,7 +843,7 @@ func init_java_lang_Object() {
cls := C.CString("java/lang/Object") cls := C.CString("java/lang/Object")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Object = clazz class_java_lang_Object = clazz
@ -884,7 +884,7 @@ func init_java_util_concurrent_TimeUnit() {
cls := C.CString("java/util/concurrent/TimeUnit") cls := C.CString("java/util/concurrent/TimeUnit")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_concurrent_TimeUnit = clazz class_java_util_concurrent_TimeUnit = clazz
@ -925,7 +925,7 @@ func init_java_util_Spliterators() {
cls := C.CString("java/util/Spliterators") cls := C.CString("java/util/Spliterators")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Spliterators = clazz class_java_util_Spliterators = clazz
@ -1087,7 +1087,7 @@ func init_java_lang_System() {
cls := C.CString("java/lang/System") cls := C.CString("java/lang/System")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_System = clazz class_java_lang_System = clazz
@ -1152,7 +1152,7 @@ func init_java_Future() {
cls := C.CString("java/Future") cls := C.CString("java/Future")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_Future = clazz class_java_Future = clazz
@ -1302,7 +1302,7 @@ func init_java_InputStream() {
cls := C.CString("java/InputStream") cls := C.CString("java/InputStream")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_InputStream = clazz class_java_InputStream = clazz
@ -1484,7 +1484,7 @@ func init_java_Object() {
cls := C.CString("java/Object") cls := C.CString("java/Object")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_Object = clazz class_java_Object = clazz
@ -1552,7 +1552,7 @@ func init_java_Runnable() {
cls := C.CString("java/Runnable") cls := C.CString("java/Runnable")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_Runnable = clazz class_java_Runnable = clazz
@ -1616,7 +1616,7 @@ func init_java_util_Iterator() {
cls := C.CString("java/util/Iterator") cls := C.CString("java/util/Iterator")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Iterator = clazz class_java_util_Iterator = clazz
@ -1641,7 +1641,7 @@ func init_java_util_Spliterator() {
cls := C.CString("java/util/Spliterator") cls := C.CString("java/util/Spliterator")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Spliterator = clazz class_java_util_Spliterator = clazz
@ -1666,7 +1666,7 @@ func init_java_util_PrimitiveIterator_OfInt() {
cls := C.CString("java/util/PrimitiveIterator$OfInt") cls := C.CString("java/util/PrimitiveIterator$OfInt")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_PrimitiveIterator_OfInt = clazz class_java_util_PrimitiveIterator_OfInt = clazz
@ -1691,7 +1691,7 @@ func init_java_util_Spliterator_OfInt() {
cls := C.CString("java/util/Spliterator$OfInt") cls := C.CString("java/util/Spliterator$OfInt")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Spliterator_OfInt = clazz class_java_util_Spliterator_OfInt = clazz
@ -1716,7 +1716,7 @@ func init_java_util_PrimitiveIterator_OfLong() {
cls := C.CString("java/util/PrimitiveIterator$OfLong") cls := C.CString("java/util/PrimitiveIterator$OfLong")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_PrimitiveIterator_OfLong = clazz class_java_util_PrimitiveIterator_OfLong = clazz
@ -1741,7 +1741,7 @@ func init_java_util_Spliterator_OfLong() {
cls := C.CString("java/util/Spliterator$OfLong") cls := C.CString("java/util/Spliterator$OfLong")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Spliterator_OfLong = clazz class_java_util_Spliterator_OfLong = clazz
@ -1766,7 +1766,7 @@ func init_java_util_PrimitiveIterator_OfDouble() {
cls := C.CString("java/util/PrimitiveIterator$OfDouble") cls := C.CString("java/util/PrimitiveIterator$OfDouble")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_PrimitiveIterator_OfDouble = clazz class_java_util_PrimitiveIterator_OfDouble = clazz
@ -1791,7 +1791,7 @@ func init_java_util_Spliterator_OfDouble() {
cls := C.CString("java/util/Spliterator$OfDouble") cls := C.CString("java/util/Spliterator$OfDouble")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_util_Spliterator_OfDouble = clazz class_java_util_Spliterator_OfDouble = clazz
@ -1816,7 +1816,7 @@ func init_java_io_Console() {
cls := C.CString("java/io/Console") cls := C.CString("java/io/Console")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_io_Console = clazz class_java_io_Console = clazz

View File

@ -271,7 +271,7 @@ func init_java_lang_Float() {
cls := C.CString("java/lang/Float") cls := C.CString("java/lang/Float")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Float = clazz class_java_lang_Float = clazz
@ -312,7 +312,7 @@ func init_java_lang_Long() {
cls := C.CString("java/lang/Long") cls := C.CString("java/lang/Long")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Long = clazz class_java_lang_Long = clazz
@ -353,7 +353,7 @@ func init_java_lang_Object() {
cls := C.CString("java/lang/Object") cls := C.CString("java/lang/Object")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Object = clazz class_java_lang_Object = clazz
@ -394,7 +394,7 @@ func init_java_lang_Runnable() {
cls := C.CString("java/lang/Runnable") cls := C.CString("java/lang/Runnable")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Runnable = clazz class_java_lang_Runnable = clazz
@ -419,7 +419,7 @@ func init_java_lang_Character() {
cls := C.CString("java/lang/Character") cls := C.CString("java/lang/Character")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Character = clazz class_java_lang_Character = clazz
@ -460,7 +460,7 @@ func init_java_lang_Character_Subset() {
cls := C.CString("java/lang/Character$Subset") cls := C.CString("java/lang/Character$Subset")
clazz := C.go_seq_find_class(cls) clazz := C.go_seq_find_class(cls)
C.free(unsafe.Pointer(cls)) C.free(unsafe.Pointer(cls))
if clazz == nil { if uintptr(clazz) == 0 {
return return
} }
class_java_lang_Character_Subset = clazz class_java_lang_Character_Subset = clazz