module Magick

def formats(&block)

def formats(&block)
  @formats ||= init_formats
  if block_given?
    @formats.each{|k, v| yield k, v }
    self
  else
    @formats
  end
end

def trace_proc=(p)

remove reference to the proc at exit
def trace_proc=(p)
  m = Mutex.new
  m.synchronize do
    if @trace_proc.nil? && !p.nil? && !@exit_block_set_up
      at_exit { @trace_proc = nil }
      @exit_block_set_up = true
    end
    @trace_proc = p
  end
end