https://gcc.gnu.org/g:5b5aadb643cff7d19d51a60506a45676cee533a9

commit 5b5aadb643cff7d19d51a60506a45676cee533a9
Author: badumbatish <tanghocle...@gmail.com>
Date:   Fri Aug 23 22:21:05 2024 -0700

    Add pop guard for binder
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-type-check.h:
            Add pop guard for binder

Diff:
---
 gcc/rust/typecheck/rust-hir-type-check.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/typecheck/rust-hir-type-check.h 
b/gcc/rust/typecheck/rust-hir-type-check.h
index c85a83955b9c..eb0c8490ecbf 100644
--- a/gcc/rust/typecheck/rust-hir-type-check.h
+++ b/gcc/rust/typecheck/rust-hir-type-check.h
@@ -349,6 +349,8 @@ private:
     /** Only to be used by the guard. */
     void pop_binder () { binder_size_stack.pop (); }
 
+    bool binder_empty () { return binder_size_stack.empty (); }
+
     /**
      * Switch from resolving a function header to a function body.
      */
@@ -424,7 +426,8 @@ public:
     ~LifetimeResolverGuard ()
     {
       rust_assert (!ctx.lifetime_resolver_stack.empty ());
-      ctx.lifetime_resolver_stack.top ().pop_binder ();
+      if (!ctx.lifetime_resolver_stack.top ().binder_empty ())
+       ctx.lifetime_resolver_stack.top ().pop_binder ();
       if (kind == RESOLVER)
        {
          ctx.lifetime_resolver_stack.pop ();

Reply via email to