coar 98/07/23 03:46:25
Modified: src/main http_core.c Log: Add a comment explaining the initially astonishing use of '!=' in what otherwise looks like it should be a string comparison. Revision Changes Path 1.213 +9 -3 apache-1.3/src/main/http_core.c Index: http_core.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.212 retrieving revision 1.213 diff -u -r1.212 -r1.213 --- http_core.c 1998/07/13 11:32:39 1.212 +++ http_core.c 1998/07/23 10:46:23 1.213 @@ -1087,12 +1087,18 @@ static const char *end_nested_section(cmd_parms *cmd, void *dummy) { if (cmd->end_token == NULL) { - return ap_pstrcat(cmd->pool, cmd->cmd->name, - " without matching <", cmd->cmd->name + 2, " section", NULL); + return ap_pstrcat(cmd->pool, cmd->cmd->name, + " without matching <", cmd->cmd->name + 2, + " section", NULL); } + /* + * This '!=' may look weird on a string comparison, but it's correct -- + * it's been set up so that checking for two pointers to the same datum + * is valid here. And faster. + */ if (cmd->cmd->name != cmd->end_token) { return ap_pstrcat(cmd->pool, "Expected ", cmd->end_token, " but saw ", - cmd->cmd->name, NULL); + cmd->cmd->name, NULL); } return cmd->end_token; }