[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cairo-commit
Subject:    [cairo-commit] src/cairo-default-context.c
From:       ranma42 () kemper ! freedesktop ! org (Andrea Canciani)
Date:       2011-07-30 7:53:03
Message-ID: 20110730075303.AE7B6D8002 () kemper ! freedesktop ! org
[Download RAW message or body]

 src/cairo-default-context.c |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 6155348966b89a216d2e5ee0b4784507a0226a9f
Author: Andrea Canciani <ranma42@gmail.com>
Date:   Sat Jul 30 09:46:33 2011 +0200

    default-context: Do not allow restoring pushed gstates
    
    The brackets defined by push/pop and save/restore are independent ad
    should match properly.
    
    This means that cairo_push()-ed gstates cannot be cairo_restore()-d
    and cairo_save()-d gstates cannot be cairo_pop()-ed.
    
    Fixes group-state.

diff --git a/src/cairo-default-context.c b/src/cairo-default-context.c
index 1798e5c..4124632 100644
--- a/src/cairo-default-context.c
+++ b/src/cairo-default-context.c
@@ -119,6 +119,9 @@ _cairo_default_context_restore (void *abstract_cr)
 {
     cairo_default_context_t *cr = abstract_cr;
 
+    if (unlikely (_cairo_gstate_is_group (cr->gstate)))
+	return _cairo_error (CAIRO_STATUS_INVALID_RESTORE);
+
     return _cairo_gstate_restore (&cr->gstate, &cr->gstate_freelist);
 }
 
_______________________________________________
cairo-commit mailing list
cairo-commit@lists.cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo-commit
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic