Skip to content

Commit

Permalink
Fix JRUBY-3719 by using default (copy in & out) flags in place of cop…
Browse files Browse the repository at this point in the history
…yout
  • Loading branch information
vp-of-awesome committed May 31, 2009
1 parent 8e6c773 commit 1dbebb1
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/org/jruby/ext/ffi/jffi/DefaultMethodFactory.java
Expand Up @@ -661,16 +661,15 @@ public final void marshal(Invocation invocation, InvocationBuffer buffer, IRubyO
*/
static final class BufferMarshaller extends BaseMarshaller {
static final ParameterMarshaller IN = new BufferMarshaller(ArrayFlags.IN);
static final ParameterMarshaller OUT = new BufferMarshaller(ArrayFlags.OUT);
static final ParameterMarshaller INOUT = new BufferMarshaller(ArrayFlags.IN | ArrayFlags.OUT);
static final ParameterMarshaller OUT = new BufferMarshaller(0);
static final ParameterMarshaller INOUT = new BufferMarshaller(0);
private final int flags;
public BufferMarshaller(int flags) {
this.flags = flags;
}
private static final int bufferFlags(Buffer buffer) {
int f = buffer.getInOutFlags();
return ((f & Buffer.IN) != 0 ? ArrayFlags.IN: 0)
| ((f & Buffer.OUT) != 0 ? ArrayFlags.OUT : 0);
return ((f & (Buffer.OUT | Buffer.IN)) == Buffer.IN) ? ArrayFlags.IN: 0;
}
@Override
public boolean needsInvocationSession() {
Expand All @@ -679,7 +678,7 @@ public boolean needsInvocationSession() {
private static final void addBufferParameter(InvocationBuffer buffer, IRubyObject parameter, int flags) {
ArrayMemoryIO memory = (ArrayMemoryIO) ((Buffer) parameter).getMemoryIO();
buffer.putArray(memory.array(), memory.arrayOffset(), memory.arrayLength(),
flags & bufferFlags((Buffer) parameter));
flags | bufferFlags((Buffer) parameter));
}
private static final long getAddress(Pointer ptr) {
return ((DirectMemoryIO) ptr.getMemoryIO()).getAddress();
Expand Down

0 comments on commit 1dbebb1

Please sign in to comment.