< prev index next >

src/java.naming/share/classes/com/sun/jndi/ldap/EventSupport.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2019, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1999, 2020, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 248,259 **** --- 248,264 ---- */ synchronized void removeDeadNotifier(NotifierArgs info) { if (debug) { System.err.println("EventSupport.removeDeadNotifier: " + info.name); } + if (notifiers != null) { + // Only do this if cleanup() not been triggered, otherwise here + // will throw NullPointerException since notifiers will be set to + // null in cleanup() notifiers.remove(info); } + } /** * Fire an event to unsolicited listeners. * package private; * Called by LdapCtx when its clnt receives an unsolicited notification.
*** 327,336 **** --- 332,346 ---- * them to the registered listeners. * Package private; used by NamingEventNotifier to fire events */ synchronized void queueEvent(EventObject event, Vector<? extends NamingListener> vector) { + if (notifiers == null) { + // That means cleanup() already done, not queue event anymore, + // otherwise, new created EventQueue will not been cleanup. + return; + } if (eventQueue == null) eventQueue = new EventQueue(); /* * Copy the vector in order to freeze the state of the set
< prev index next >