comparison regex.c @ 963:ed0235161e4b

(TRANSLATE, re_search_2, re_match_2_internal,bcmp_translate): Use RE_TRANSLATE instead of accessing translate array directly.
author Richard Stallman <rms@gnu.org>
date Fri, 04 Jul 1997 20:46:22 +0000
parents 6959c7741ed2
children 03e78eed4997
comparison
equal deleted inserted replaced
962:1bd42c6bc7a3 963:ed0235161e4b
1538 cast the subscript to translate because some data is declared as 1538 cast the subscript to translate because some data is declared as
1539 `char *', to avoid warnings when a string constant is passed. But 1539 `char *', to avoid warnings when a string constant is passed. But
1540 when we use a character as a subscript we must make it unsigned. */ 1540 when we use a character as a subscript we must make it unsigned. */
1541 #ifndef TRANSLATE 1541 #ifndef TRANSLATE
1542 #define TRANSLATE(d) \ 1542 #define TRANSLATE(d) \
1543 (translate ? (unsigned char) translate[(unsigned char) (d)] : (d)) 1543 (translate ? (unsigned char) RE_TRANSLATE (translate, (unsigned char) (d)) : (d))
1544 #endif 1544 #endif
1545 1545
1546 1546
1547 /* Macros for outputting the compiled pattern into `buffer'. */ 1547 /* Macros for outputting the compiled pattern into `buffer'. */
1548 1548
3808 /* Written out as an if-else to avoid testing `translate' 3808 /* Written out as an if-else to avoid testing `translate'
3809 inside the loop. */ 3809 inside the loop. */
3810 if (translate) 3810 if (translate)
3811 while (range > lim 3811 while (range > lim
3812 && !fastmap[(unsigned char) 3812 && !fastmap[(unsigned char)
3813 translate[(unsigned char) *d++]]) 3813 RE_TRANSLATE (translate, (unsigned char) *d++)])
3814 range--; 3814 range--;
3815 else 3815 else
3816 while (range > lim && !fastmap[(unsigned char) *d++]) 3816 while (range > lim && !fastmap[(unsigned char) *d++])
3817 range--; 3817 range--;
3818 3818
4498 if (translate) 4498 if (translate)
4499 { 4499 {
4500 do 4500 do
4501 { 4501 {
4502 PREFETCH (); 4502 PREFETCH ();
4503 if ((unsigned char) translate[(unsigned char) *d++] 4503 if ((unsigned char) RE_TRANSLATE (translate, (unsigned char) *d++)
4504 != (unsigned char) *p++) 4504 != (unsigned char) *p++)
4505 goto fail; 4505 goto fail;
4506 } 4506 }
4507 while (--mcnt); 4507 while (--mcnt);
4508 } 4508 }
5893 RE_TRANSLATE_TYPE translate; 5893 RE_TRANSLATE_TYPE translate;
5894 { 5894 {
5895 register unsigned char *p1 = s1, *p2 = s2; 5895 register unsigned char *p1 = s1, *p2 = s2;
5896 while (len) 5896 while (len)
5897 { 5897 {
5898 if (translate[*p1++] != translate[*p2++]) return 1; 5898 if (RE_TRANSLATE (translate, *p1++) != RE_TRANSLATE (translate, *p2++))
5899 return 1;
5899 len--; 5900 len--;
5900 } 5901 }
5901 return 0; 5902 return 0;
5902 } 5903 }
5903 5904