From c0b24ae9f197885c2bfde8ca2fc4883858b7fc33 Mon Sep 17 00:00:00 2001 From: Richard Rauch Date: Mon, 27 Oct 2003 06:39:57 +0000 Subject: [PATCH] Propogated a pointer-check from menu-attach to menu-detach. (Apparently, in some cases, the Menu member variable can be NULL.) Corrected the menu-attach code to make sure that both Window and Menu pointers are non-NULL (rather than "at least one"). Rewrote button-checks to more simply and more clearly assert that the "menu button" is a valid button for menu actions: Instead of laboriously comparing against the three valid buttons (0, 1, 2 or GLUT_BUTTON_*), we do a simpler range-check and the upper bound is {FREEGLUT_MAX_MENUS}, allowing us to change the number of menuable buttons fairly easily in the future. Also deleted a few say-nothing-new comments. git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@250 7f0cb862-5218-0410-a997-914c9d46530a --- src/freeglut_menu.c | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/src/freeglut_menu.c b/src/freeglut_menu.c index 45ff5ea..c7760d9 100644 --- a/src/freeglut_menu.c +++ b/src/freeglut_menu.c @@ -992,20 +992,10 @@ void FGAPIENTRY glutRemoveMenuItem( int item ) void FGAPIENTRY glutAttachMenu( int button ) { freeglut_assert_ready; - - /* - * There must be a current window and a current menu set: - */ - freeglut_return_if_fail( fgStructure.Window != NULL || fgStructure.Menu != NULL ); - - /* - * Make sure the button value is valid (0, 1 or 2, see freeglut.h) - */ - freeglut_return_if_fail( button == GLUT_LEFT_BUTTON || button == GLUT_MIDDLE_BUTTON || button == GLUT_RIGHT_BUTTON ); - - /* - * It is safe now to attach the menu - */ + freeglut_return_if_fail( fgStructure.Window ); + freeglut_return_if_fail( fgStructure.Menu ); + freeglut_return_if_fail( button >= 0 ); + freeglut_return_if_fail( button < FREEGLUT_MAX_MENUS ); fgStructure.Window->Menu[ button ] = fgStructure.Menu; /* @@ -1020,20 +1010,10 @@ void FGAPIENTRY glutAttachMenu( int button ) void FGAPIENTRY glutDetachMenu( int button ) { freeglut_assert_ready; - - /* - * There must be a current window set: - */ freeglut_return_if_fail( fgStructure.Window != NULL ); - - /* - * Make sure the button value is valid (0, 1 or 2, see freeglut.h) - */ - freeglut_return_if_fail( button != 0 && button != 1 && button != 2 ); - - /* - * It is safe now to detach the menu - */ + freeglut_return_if_fail( fgStructure.Menu ); + freeglut_return_if_fail( button >= 0 ); + freeglut_return_if_fail( button < FREEGLUT_MAX_MENUS ); fgStructure.Window->Menu[ button ] = NULL; } -- 1.7.10.4