diff --git a/src/gui_photon.c b/src/gui_photon.c
index d48a153..5671890 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -992,19 +992,19 @@
     char **new_titles = NULL;
 
     new_titles = ALLOC_MULT(char *, (num_panels + 1));
-    if (new_titles != NULL)
-    {
-	if (num_panels > 0)
-	    memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
+    if (new_titles == NULL)
+	return;
 
-	new_titles[ num_panels++ ] = name;
+    if (num_panels > 0)
+	memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
 
-	PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
-		num_panels);
+    new_titles[ num_panels++ ] = name;
 
-	vim_free(panel_titles);
-	panel_titles = new_titles;
-    }
+    PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+	    num_panels);
+
+    vim_free(panel_titles);
+    panel_titles = new_titles;
 }
 
     static void
@@ -1901,21 +1901,21 @@
     void
 gui_mch_mousehide(int hide)
 {
-    if (gui.pointer_hidden != hide)
-    {
-	gui.pointer_hidden = hide;
+    if (gui.pointer_hidden == hide)
+	return;
+
+    gui.pointer_hidden = hide;
 #ifdef FEAT_MOUSESHAPE
-	if (hide)
-	    PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
-		    Ph_CURSOR_NONE, 0);
-	else
-	    mch_set_mouse_shape(last_shape);
-#else
+    if (hide)
 	PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
-		(hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
-		0);
+		Ph_CURSOR_NONE, 0);
+    else
+	mch_set_mouse_shape(last_shape);
+#else
+    PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+	    (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+	    0);
 #endif
-    }
 }
 
     void
