+ c = match_at[gl->matched_range.rm_eo];
+ }
+ if (!isalnum(c) && c != '_') {
+ found = 1;
+ } else {
+ /*
+ * Why check gl->matched_range.rm_eo?
+ * Zero-length match makes -w skip the line:
+ * "echo foo | grep ^" prints "foo",
+ * "echo foo | grep -w ^" prints nothing.
+ * Without such check, we can loop forever.
+ */
+#if !ENABLE_EXTRA_COMPAT
+ if (gl->matched_range.rm_eo != 0) {
+ match_at += gl->matched_range.rm_eo;
+ match_flg |= REG_NOTBOL;
+ goto opt_w_again;
+ }
+#else
+ if (gl->matched_range.rm_eo > start_pos) {
+ start_pos = gl->matched_range.rm_eo;
+ goto opt_w_again;
+ }
+#endif