lib/ffi-rzmq/socket.rb in ffi-rzmq-1.0.1 vs lib/ffi-rzmq/socket.rb in ffi-rzmq-1.0.2
- old
+ new
@@ -627,20 +627,20 @@
# these finalizer-related methods cannot live in the CommonSocketBehavior
# module; they *must* be in the class definition directly
def define_finalizer
- ObjectSpace.define_finalizer(self, self.class.close(@socket))
+ ObjectSpace.define_finalizer(self, self.class.close(@socket, Process.pid))
end
def remove_finalizer
ObjectSpace.undefine_finalizer self
end
- def self.close socket
+ def self.close socket, pid
Proc.new do
- LibZMQ.zmq_close(socket) if socket && !socket.null?
+ LibZMQ.zmq_close(socket) if socket && !socket.nil? && Process.pid == pid
end
end
end # class Socket for version2
end # LibZMQ.version2?
@@ -743,18 +743,18 @@
# these finalizer-related methods cannot live in the CommonSocketBehavior
# module; they *must* be in the class definition directly
def define_finalizer
- ObjectSpace.define_finalizer(self, self.class.close(@socket))
+ ObjectSpace.define_finalizer(self, self.class.close(@socket, Process.pid))
end
def remove_finalizer
ObjectSpace.undefine_finalizer self
end
- def self.close socket
- Proc.new { LibZMQ.zmq_close socket }
+ def self.close socket, pid
+ Proc.new { LibZMQ.zmq_close socket if Process.pid == pid }
end
end # Socket for version3
end # LibZMQ.version3?
end # module ZMQ