summaryrefslogtreecommitdiffstats
path: root/src/java/com/sun/gluegen/procaddress
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/sun/gluegen/procaddress')
-rwxr-xr-xsrc/java/com/sun/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java3
-rwxr-xr-xsrc/java/com/sun/gluegen/procaddress/ProcAddressEmitter.java16
2 files changed, 12 insertions, 7 deletions
diff --git a/src/java/com/sun/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java b/src/java/com/sun/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java
index 8dc46ee..84e8132 100755
--- a/src/java/com/sun/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java
+++ b/src/java/com/sun/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java
@@ -153,6 +153,9 @@ public class ProcAddressCMethodBindingEmitter extends CMethodBindingEmitter {
// set the function pointer to the value of the passed-in glProcAddress
FunctionSymbol cSym = getBinding().getCSymbol();
String funcPointerTypedefName = emitter.getFunctionPointerTypedefName(cSym);
+ if (needsLocalTypedef) {
+ funcPointerTypedefName = "_local_" + funcPointerTypedefName;
+ }
String ptrVarName = "ptr_" + cSym.getName();
diff --git a/src/java/com/sun/gluegen/procaddress/ProcAddressEmitter.java b/src/java/com/sun/gluegen/procaddress/ProcAddressEmitter.java
index fe77248..45e0bf4 100755
--- a/src/java/com/sun/gluegen/procaddress/ProcAddressEmitter.java
+++ b/src/java/com/sun/gluegen/procaddress/ProcAddressEmitter.java
@@ -268,13 +268,15 @@ public class ProcAddressEmitter extends JavaEmitter
if (shouldWrap)
{
// Hoist argument names from function pointer if not supplied in prototype
- FunctionType typedef = typedefDictionary.get(funcPointerTypedefName).asPointer().getTargetType().asFunction();
- FunctionType fun = sym.getType();
- int numarg = typedef.getNumArguments();
- for ( int i =0; i < numarg; i++ )
- {
- if ( fun.getArgumentName(i) == null )
- fun.setArgumentName(i,typedef.getArgumentName(i));
+ Type funcPointerType = typedefDictionary.get(funcPointerTypedefName);
+ if (funcPointerType != null) {
+ FunctionType typedef = funcPointerType.asPointer().getTargetType().asFunction();
+ FunctionType fun = sym.getType();
+ int numarg = typedef.getNumArguments();
+ for (int i =0; i < numarg; i++) {
+ if (fun.getArgumentName(i) == null)
+ fun.setArgumentName(i,typedef.getArgumentName(i));
+ }
}
}