diff options
author | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2013-02-20 17:42:03 +0000 |
---|---|---|
committer | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2013-02-20 17:42:03 +0000 |
commit | f690a395adb2258f01104da8592261e58a92b9c7 (patch) | |
tree | d362569d6e8a5fdac895c9ff73aaf6dddb02a028 /pcre_exec.c | |
parent | 86957348ae7fb586d050087ce90bbd1d3d8aae36 (diff) | |
download | pcre-f690a395adb2258f01104da8592261e58a92b9c7.tar.gz |
Pass back the bumpalong value for partial matches.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1251 2f5784b3-3f2a-0410-8824-cb99058d5e15
Diffstat (limited to 'pcre_exec.c')
-rw-r--r-- | pcre_exec.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/pcre_exec.c b/pcre_exec.c index cd5475f..238a7ab 100644 --- a/pcre_exec.c +++ b/pcre_exec.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2012 University of Cambridge + Copyright (c) 1997-2013 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -6286,6 +6286,7 @@ const pcre_uint8 *start_bits = NULL; PCRE_PUCHAR start_match = (PCRE_PUCHAR)subject + start_offset; PCRE_PUCHAR end_subject; PCRE_PUCHAR start_partial = NULL; +PCRE_PUCHAR match_partial; PCRE_PUCHAR req_char_ptr = start_match - 1; const pcre_study_data *study; @@ -6837,7 +6838,11 @@ for(;;) md->match_function_type = 0; md->end_offset_top = 0; rc = match(start_match, md->start_code, start_match, 2, md, NULL, 0); - if (md->hitend && start_partial == NULL) start_partial = md->start_used_ptr; + if (md->hitend && start_partial == NULL) + { + start_partial = md->start_used_ptr; + match_partial = start_match; + } switch(rc) { @@ -7045,6 +7050,8 @@ if (start_partial != NULL) { offsets[0] = (int)(start_partial - (PCRE_PUCHAR)subject); offsets[1] = (int)(end_subject - (PCRE_PUCHAR)subject); + if (offsetcount > 2) + offsets[2] = (int)(match_partial - (PCRE_PUCHAR)subject); } rc = PCRE_ERROR_PARTIAL; } |