../3rdparty/pcre/pcre_refcount.c

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/************************************************* -
2* Perl-Compatible Regular Expressions * -
3*************************************************/ -
4 -
5/* PCRE is a library of functions to support regular expressions whose syntax -
6and semantics are as close as possible to those of the Perl 5 language. -
7 -
8 Written by Philip Hazel -
9 Copyright (c) 1997-2012 University of Cambridge -
10 -
11----------------------------------------------------------------------------- -
12Redistribution and use in source and binary forms, with or without -
13modification, are permitted provided that the following conditions are met: -
14 -
15 * Redistributions of source code must retain the above copyright notice, -
16 this list of conditions and the following disclaimer. -
17 -
18 * Redistributions in binary form must reproduce the above copyright -
19 notice, this list of conditions and the following disclaimer in the -
20 documentation and/or other materials provided with the distribution. -
21 -
22 * Neither the name of the University of Cambridge nor the names of its -
23 contributors may be used to endorse or promote products derived from -
24 this software without specific prior written permission. -
25 -
26THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -
27AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -
28IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -
29ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -
30LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -
31CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -
32SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -
33INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -
34CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -
35ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -
36POSSIBILITY OF SUCH DAMAGE. -
37----------------------------------------------------------------------------- -
38*/ -
39 -
40 -
41/* This module contains the external function pcre_refcount(), which is an -
42auxiliary function that can be used to maintain a reference count in a compiled -
43pattern data block. This might be helpful in applications where the block is -
44shared by different users. */ -
45 -
46 -
47#ifdef PCRE_HAVE_CONFIG_H -
48#include "config.h" -
49#endif -
50 -
51#include "pcre_internal.h" -
52 -
53 -
54/************************************************* -
55* Maintain reference count * -
56*************************************************/ -
57 -
58/* The reference count is a 16-bit field, initialized to zero. It is not -
59possible to transfer a non-zero count from one host to a different host that -
60has a different byte order - though I can't see why anyone in their right mind -
61would ever want to do that! -
62 -
63Arguments: -
64 argument_re points to compiled code -
65 adjust value to add to the count -
66 -
67Returns: the (possibly updated) count value (a non-negative number), or -
68 a negative error number -
69*/ -
70 -
71#ifdef COMPILE_PCRE8 -
72PCRE_EXP_DEFN int PCRE_CALL_CONVENTION -
73pcre_refcount(pcre *argument_re, int adjust) -
74#else -
75PCRE_EXP_DEFN int PCRE_CALL_CONVENTION -
76pcre16_refcount(pcre16 *argument_re, int adjust) -
77#endif -
78{ -
79REAL_PCRE *re = (REAL_PCRE *)argument_re;
never executed (the execution status of this line is deduced): real_pcre16 *re = (real_pcre16 *)argument_re;
-
80if (re == NULL) return PCRE_ERROR_NULL;
never executed: return (-2);
never evaluated: re == ((void *)0)
0
81if (re->magic_number != MAGIC_NUMBER) return PCRE_ERROR_BADMAGIC;
never executed: return (-4);
never evaluated: re->magic_number != 0x50435245UL
0
82if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE;
never executed: return (-28);
never evaluated: (re->flags & 0x0002) == 0
0
83re->ref_count = (-adjust > re->ref_count)? 0 :
never evaluated: (-adjust > re->ref_count)
0
84 (adjust + re->ref_count > 65535)? 65535 :
never executed (the execution status of this line is deduced): (adjust + re->ref_count > 65535)? 65535 :
-
85 re->ref_count + adjust;
never executed (the execution status of this line is deduced): re->ref_count + adjust;
-
86return re->ref_count;
never executed: return re->ref_count;
0
87} -
88 -
89/* End of pcre_refcount.c */ -
90 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial