mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.8 KiB

  1. --- ./posix/regcomp.c 2003/12/16 06:10:51 1.68
  2. +++ ./posix/regcomp.c 2003/12/22 06:45:04 1.69
  3. @@ -1157,7 +1157,7 @@
  4. case OP_CLOSE_EQUIV_CLASS:
  5. case OP_OPEN_CHAR_CLASS:
  6. case OP_CLOSE_CHAR_CLASS:
  7. - /* These must not be appeared here. */
  8. + /* These must not appear here. */
  9. assert (0);
  10. #endif
  11. case END_OF_RE:
  12. @@ -1336,8 +1336,6 @@
  13. if (BE (err != REG_NOERROR, 0))
  14. return err;
  15. dfa->nexts[clone_node] = dfa->nexts[org_node];
  16. - if (clone_dest == -1)
  17. - break;
  18. ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
  19. if (BE (ret < 0, 0))
  20. return REG_ESPACE;
  21. @@ -1375,8 +1373,6 @@
  22. err = duplicate_node (&clone_dest, dfa, org_dest, constraint);
  23. if (BE (err != REG_NOERROR, 0))
  24. return err;
  25. - if (clone_dest == -1)
  26. - break;
  27. ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
  28. if (BE (ret < 0, 0))
  29. return REG_ESPACE;
  30. @@ -1395,16 +1391,13 @@
  31. err = duplicate_node (&clone_dest, dfa, org_dest, constraint);
  32. if (BE (err != REG_NOERROR, 0))
  33. return err;
  34. - if (clone_dest != -1)
  35. - {
  36. - ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
  37. - if (BE (ret < 0, 0))
  38. - return REG_ESPACE;
  39. - err = duplicate_node_closure (dfa, org_dest, clone_dest,
  40. - root_node, constraint);
  41. - if (BE (err != REG_NOERROR, 0))
  42. - return err;
  43. - }
  44. + ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
  45. + if (BE (ret < 0, 0))
  46. + return REG_ESPACE;
  47. + err = duplicate_node_closure (dfa, org_dest, clone_dest,
  48. + root_node, constraint);
  49. + if (BE (err != REG_NOERROR, 0))
  50. + return err;
  51. }
  52. else
  53. {
  54. @@ -1419,8 +1412,6 @@
  55. err = duplicate_node (&clone_dest, dfa, org_dest, constraint);
  56. if (BE (err != REG_NOERROR, 0))
  57. return err;
  58. - if (clone_dest == -1)
  59. - break;
  60. ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
  61. if (BE (ret < 0, 0))
  62. return REG_ESPACE;
  63. @@ -1460,21 +1451,7 @@
  64. int *new_idx, org_idx;
  65. unsigned int constraint;
  66. {
  67. - int dup_idx;
  68. -
  69. - if (dfa->nodes[org_idx].type == CHARACTER
  70. - && (((constraint & NEXT_WORD_CONSTRAINT)
  71. - && !dfa->nodes[org_idx].word_char)
  72. - || ((constraint & NEXT_NOTWORD_CONSTRAINT)
  73. - && dfa->nodes[org_idx].word_char)))
  74. - {
  75. - /* \<!, \>W etc. can never match. Don't duplicate them, instead
  76. - tell the caller they shouldn't be added to edests. */
  77. - *new_idx = -1;
  78. - return REG_NOERROR;
  79. - }
  80. -
  81. - dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx], 1);
  82. + int dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx], 1);
  83. if (BE (dup_idx == -1, 0))
  84. return REG_ESPACE;
  85. dfa->nodes[dup_idx].constraint = constraint;
  86. @@ -2443,23 +2420,23 @@
  87. else
  88. goto parse_dup_op_ebrace;
  89. }
  90. - if (BE (start == 0 && end == 0, 0))
  91. + if (BE ((start == 0 && end == 0) || tree == NULL, 0))
  92. {
  93. - /* We treat "<re>{0}" and "<re>{0,0}" as null string. */
  94. + /* We treat "<re>{0}" and "<re>{0,0}" as null string.
  95. + Similarly "<re>{0}{m,n}". */
  96. fetch_token (token, regexp, syntax);
  97. return NULL;
  98. }
  99. /* Extract "<re>{n,m}" to "<re><re>...<re><re>{0,<m-n>}". */
  100. elem = tree;
  101. - for (i = 0; i < start; ++i)
  102. - if (i != 0)
  103. - {
  104. - work_tree = duplicate_tree (elem, dfa);
  105. - tree = create_tree (dfa, tree, work_tree, CONCAT, 0);
  106. - if (BE (work_tree == NULL || tree == NULL, 0))
  107. - goto parse_dup_op_espace;
  108. - }
  109. + for (i = 1; i < start; ++i)
  110. + {
  111. + work_tree = duplicate_tree (elem, dfa);
  112. + tree = create_tree (dfa, tree, work_tree, CONCAT, 0);
  113. + if (BE (work_tree == NULL || tree == NULL, 0))
  114. + goto parse_dup_op_espace;
  115. + }
  116. if (end == -1)
  117. {
  118. @@ -2516,6 +2493,9 @@
  119. }
  120. }
  121. }
  122. + /* Treat "<re>{0}*" etc. as "<re>{0}". */
  123. + else if (tree == NULL)
  124. + ;
  125. else
  126. {
  127. tree = re_dfa_add_tree_node (dfa, tree, NULL, token);