diff --git a/apps/app_while.c b/apps/app_while.c
index ea0fd4986f6b98872a5310ee2a1a43e84881c2d0..88996b92aacedef81cf1bc8e567605a6f1e8ce18 100644
--- a/apps/app_while.c
+++ b/apps/app_while.c
@@ -277,7 +277,7 @@ static int _while_exec(struct ast_channel *chan, void *data, int end)
 	}
 	
 
-	if ((!end && !pbx_checkcondition((char *) condition)) || (end == 2)) {
+	if ((!end && !pbx_checkcondition(condition)) || (end == 2)) {
 		/* Condition Met (clean up helper vars) */
 		const char *goto_str;
 		pbx_builtin_setvar_helper(chan, varname, NULL);
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h
index c165f70c0b59d1c39aef580f862a664de4b3ec29..1765aeb4b7a9f878e0d077398365ef6b4e25a2a2 100644
--- a/include/asterisk/pbx.h
+++ b/include/asterisk/pbx.h
@@ -693,7 +693,7 @@ int ast_pbx_outgoing_exten(const char *type, int format, void *data, int timeout
 int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout, const char *app, const char *appdata, int *reason, int sync, const char *cid_num, const char *cid_name, struct ast_variable *vars, const char *account, struct ast_channel **locked_channel);
 
 /* Evaluate a condition for non-falseness and return a boolean */
-int pbx_checkcondition(char *condition);
+int pbx_checkcondition(const char *condition);
 
 /* Functions for returning values from structures */
 const char *ast_get_context_name(struct ast_context *con);
diff --git a/pbx.c b/pbx.c
index e7a7263b49d0c0bf449349fb68e89927a07f29cd..a2fd93d05166ca593c781d22ba8db576cf9689bc 100644
--- a/pbx.c
+++ b/pbx.c
@@ -5480,7 +5480,7 @@ void pbx_builtin_clear_globals(void)
 	ast_mutex_unlock(&globalslock);
 }
 
-int pbx_checkcondition(char *condition) 
+int pbx_checkcondition(const char *condition) 
 {
 	if (ast_strlen_zero(condition))	/* NULL or empty strings are false */
 		return 0;