| 2733 |
|
|
| 2734 |
if (firstline) |
if (firstline) |
| 2735 |
{ |
{ |
| 2736 |
const uschar *t = current_subject; |
USPTR t = current_subject; |
| 2737 |
|
#ifdef SUPPORT_UTF8 |
| 2738 |
|
if (utf8) |
| 2739 |
|
{ |
| 2740 |
|
while (t < md->end_subject && !IS_NEWLINE(t)) |
| 2741 |
|
{ |
| 2742 |
|
t++; |
| 2743 |
|
while (t < end_subject && (*t & 0xc0) == 0x80) t++; |
| 2744 |
|
} |
| 2745 |
|
} |
| 2746 |
|
else |
| 2747 |
|
#endif |
| 2748 |
while (t < md->end_subject && !IS_NEWLINE(t)) t++; |
while (t < md->end_subject && !IS_NEWLINE(t)) t++; |
| 2749 |
end_subject = t; |
end_subject = t; |
| 2750 |
} |
} |
| 2766 |
{ |
{ |
| 2767 |
if (current_subject > md->start_subject + start_offset) |
if (current_subject > md->start_subject + start_offset) |
| 2768 |
{ |
{ |
| 2769 |
|
#ifdef SUPPORT_UTF8 |
| 2770 |
|
if (utf8) |
| 2771 |
|
{ |
| 2772 |
|
while (current_subject < end_subject && !WAS_NEWLINE(current_subject)) |
| 2773 |
|
{ |
| 2774 |
|
current_subject++; |
| 2775 |
|
while(current_subject < end_subject && |
| 2776 |
|
(*current_subject & 0xc0) == 0x80) |
| 2777 |
|
current_subject++; |
| 2778 |
|
} |
| 2779 |
|
} |
| 2780 |
|
else |
| 2781 |
|
#endif |
| 2782 |
while (current_subject < end_subject && !WAS_NEWLINE(current_subject)) |
while (current_subject < end_subject && !WAS_NEWLINE(current_subject)) |
| 2783 |
current_subject++; |
current_subject++; |
| 2784 |
|
|
| 2785 |
/* If we have just passed a CR and the newline option is ANY or |
/* If we have just passed a CR and the newline option is ANY or |
| 2786 |
ANYCRLF, and we are now at a LF, advance the match position by one more |
ANYCRLF, and we are now at a LF, advance the match position by one more |
| 2787 |
character. */ |
character. */ |