anchor.diff:  ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   
  -;; $Id: cairo.lisp,v 1.24 2008-11-28 19:26:04 espen Exp $
  +;; $Id: cairo.lisp,v 1.25 2009-02-09 11:45:03 espen Exp $
   
   (in-package "CAIRO")
   
  
positive.code: (defbinding %surface-status () status
    pointer)
  
  (defmethod allocate-foreign :around ((surface image-surface) &key)
    (let ((location (call-next-method)))
      (cond
        ((not (eq (%surface-status location) :success))
  
negative.code: (defmethod allocate-foreign ((surface image-surface) &key source type
  			     width height stride format)
    (etypecase source
     (null (%image-surface-create format width height))
     ((or stream function symbol)
      (let ((stream-id (register-user-data source)))
        (unwind-protect
  	   (cond
  