main-grpc: Fix iterator going invalid at destruction time
[src/agl-compositor.git] / grpc-proxy / main-grpc.cpp
index b86f3d8..db33032 100644 (file)
@@ -272,9 +272,8 @@ global_remove(void *data, struct wl_registry *reg, uint32_t id)
        (void) id;
 
        for (std::list<global_data>::iterator it = sh->globals.begin();
-                       it != sh->globals.end(); it++) {
-               sh->globals.erase(it);
-       }
+                       it != sh->globals.end(); it = sh->globals.erase(it))
+               ;
 }
 
 static const struct wl_registry_listener registry_listener = {
@@ -352,7 +351,7 @@ register_shell_ext(void)
                if (it->interface_name == "agl_shell") {
                        sh->shell =
                                static_cast<struct agl_shell *>(wl_registry_bind(registry, it->id,
-                                       &agl_shell_interface, std::min(static_cast<uint32_t>(10),
+                                       &agl_shell_interface, std::min(static_cast<uint32_t>(11),
                                                it->version))
                                );
                        agl_shell_add_listener(sh->shell, &shell_listener, sh);
@@ -395,9 +394,8 @@ destroy_shell_data(struct shell_data *sh)
                 destroy_output(w_output);
 
        for (std::list<global_data>::iterator it = sh->globals.begin();
-                      it != sh->globals.end(); it++) {
-              sh->globals.erase(it);
-       }
+                      it != sh->globals.end(); it = sh->globals.erase(it))
+              ;
 
         wl_display_flush(sh->wl_display);
         wl_display_disconnect(sh->wl_display);