7091388: Regular unexplained npe's from corba libs after system has been running for days
Reviewed-by: alanb
This commit is contained in:
parent
bf689f8a34
commit
ff772aece8
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -423,6 +423,13 @@ public abstract class CDRInputStream
|
||||
impl.setByteBufferWithInfo(bbwi);
|
||||
}
|
||||
|
||||
/**
|
||||
* return true if our ByteBuffer is sharing/equal to bb
|
||||
*/
|
||||
protected final boolean isSharing(ByteBuffer bb) {
|
||||
return (getByteBuffer() == bb);
|
||||
}
|
||||
|
||||
public final int getBufferLength() {
|
||||
return impl.getBufferLength();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -2412,7 +2412,6 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
|
||||
|
||||
if (bbwi != null && getByteBuffer() != null)
|
||||
{
|
||||
int bbHash = System.identityHashCode(bbwi.byteBuffer);
|
||||
MessageMediator messageMediator = parent.getMessageMediator();
|
||||
if (messageMediator != null)
|
||||
{
|
||||
@ -2420,19 +2419,12 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
|
||||
(CDROutputObject)messageMediator.getOutputObject();
|
||||
if (outputObj != null)
|
||||
{
|
||||
ByteBuffer outputBb = outputObj.getByteBuffer();
|
||||
|
||||
int oBbHash = 0;
|
||||
if (outputBb != null)
|
||||
if (outputObj.isSharing(getByteBuffer()))
|
||||
{
|
||||
oBbHash = System.identityHashCode(outputBb);
|
||||
if (bbHash == oBbHash) // shared?
|
||||
{
|
||||
// Set OutputStream's ByteBuffer and bbwi to null
|
||||
// so its ByteBuffer cannot be released to the pool
|
||||
outputObj.setByteBuffer(null);
|
||||
outputObj.setByteBufferWithInfo(null);
|
||||
}
|
||||
// Set OutputStream's ByteBuffer and bbwi to null
|
||||
// so its ByteBuffer cannot be released to the pool
|
||||
outputObj.setByteBuffer(null);
|
||||
outputObj.setByteBufferWithInfo(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -357,6 +357,13 @@ public abstract class CDROutputStream
|
||||
impl.setByteBuffer(byteBuffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* return true if our ByteBuffer is sharing/equal to bb
|
||||
*/
|
||||
protected final boolean isSharing(ByteBuffer bb) {
|
||||
return (getByteBuffer() == bb);
|
||||
}
|
||||
|
||||
public final boolean isLittleEndian() {
|
||||
return impl.isLittleEndian();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -1902,7 +1902,6 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
|
||||
|
||||
if (getByteBufferWithInfo() != null && getByteBuffer() != null)
|
||||
{
|
||||
int bbHash = System.identityHashCode(bbwi.byteBuffer);
|
||||
MessageMediator messageMediator = parent.getMessageMediator();
|
||||
if (messageMediator != null)
|
||||
{
|
||||
@ -1910,19 +1909,12 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
|
||||
(CDRInputObject)messageMediator.getInputObject();
|
||||
if (inputObj != null)
|
||||
{
|
||||
ByteBuffer inputBb = inputObj.getByteBuffer();
|
||||
|
||||
int iBbHash = 0;
|
||||
if (inputBb != null)
|
||||
if (inputObj.isSharing(getByteBuffer()))
|
||||
{
|
||||
iBbHash = System.identityHashCode(inputBb);
|
||||
if (bbHash == iBbHash) // shared?
|
||||
{
|
||||
// Set InputStream's ByteBuffer and bbwi to null
|
||||
// so its ByteBuffer cannot be released to the pool
|
||||
inputObj.setByteBuffer(null);
|
||||
inputObj.setByteBufferWithInfo(null);
|
||||
}
|
||||
// Set InputStream's ByteBuffer and bbwi to null
|
||||
// so its ByteBuffer cannot be released to the pool
|
||||
inputObj.setByteBuffer(null);
|
||||
inputObj.setByteBufferWithInfo(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user