[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: const-correctness fixes for regex
From: |
Paul Eggert |
Subject: |
Re: const-correctness fixes for regex |
Date: |
Wed, 31 Aug 2005 16:38:49 -0700 |
User-agent: |
Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) |
Jim Meyering <address@hidden> writes:
> A week or so ago, I stumbled across one interface that was missing a
> `const' attribute on a parameter, then dug up a few more. Paul, let me
> know when you reach a point at which my checking this in won't interfere.
It's easier for me if I just get it off the plate and install it now.
I installed this into gnulib and filed glibc bug 1282. Thanks.
I wish missing-const-detection could be done automatically. I suppose
we could add const to all the pointers, and then remove each const
that causes a diagnostic, but that sounds pretty painful....
2005-08-31 Jim Meyering <address@hidden>
* lib/regcomp.c (search_duplicated_node): Make first pointer arg
a pointer-to-const.
* lib/regex_internal.c (create_ci_newstate, create_cd_newstate):
(register_state): Likewise.
* lib/regexec.c (search_cur_bkref_entry, check_dst_limits):
(check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
(group_nodes_into_DFAstates): Likewise.
* config/srclist.txt: Add glibc bug 1282.
--- lib/regcomp.c 31 Aug 2005 22:51:10 -0000 1.13
+++ lib/regcomp.c 31 Aug 2005 23:25:36 -0000
@@ -46,7 +46,7 @@ static reg_errcode_t calc_first (void *e
static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
static Idx duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int
constraint);
-static Idx search_duplicated_node (re_dfa_t *dfa, Idx org_node,
+static Idx search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
unsigned int constraint);
static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
@@ -1506,7 +1506,7 @@ duplicate_node_closure (re_dfa_t *dfa, I
satisfies the constraint CONSTRAINT. */
static Idx
-search_duplicated_node (re_dfa_t *dfa, Idx org_node,
+search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
unsigned int constraint)
{
Idx idx;
--- lib/regex_internal.c 31 Aug 2005 22:51:10 -0000 1.10
+++ lib/regex_internal.c 31 Aug 2005 23:25:36 -0000
@@ -21,10 +21,10 @@ static void re_string_construct_common (
re_string_t *pstr,
REG_TRANSLATE_TYPE trans, int icase,
const re_dfa_t *dfa) internal_function;
-static re_dfastate_t *create_ci_newstate (re_dfa_t *dfa,
+static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
const re_node_set *nodes,
re_hashval_t hash) internal_function;
-static re_dfastate_t *create_cd_newstate (re_dfa_t *dfa,
+static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
const re_node_set *nodes,
unsigned int context,
re_hashval_t hash) internal_function;
@@ -1465,7 +1465,7 @@ re_acquire_state_context (reg_errcode_t
static reg_errcode_t
internal_function
-register_state (re_dfa_t *dfa, re_dfastate_t *newstate, re_hashval_t hash)
+register_state (const re_dfa_t *dfa, re_dfastate_t *newstate, re_hashval_t
hash)
{
struct re_state_table_entry *spot;
reg_errcode_t err;
@@ -1502,7 +1502,8 @@ register_state (re_dfa_t *dfa, re_dfasta
static re_dfastate_t *
internal_function
-create_ci_newstate (re_dfa_t *dfa, const re_node_set *nodes, re_hashval_t hash)
+create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
+ re_hashval_t hash)
{
Idx i;
reg_errcode_t err;
@@ -1551,7 +1552,7 @@ create_ci_newstate (re_dfa_t *dfa, const
static re_dfastate_t *
internal_function
-create_cd_newstate (re_dfa_t *dfa, const re_node_set *nodes,
+create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
unsigned int context, re_hashval_t hash)
{
Idx i, nctx_nodes = 0;
--- lib/regexec.c 31 Aug 2005 22:51:10 -0000 1.13
+++ lib/regexec.c 31 Aug 2005 23:25:36 -0000
@@ -24,7 +24,7 @@ static void match_ctx_free (re_match_con
static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, Idx node,
Idx str_idx, Idx from, Idx to)
internal_function;
-static Idx search_cur_bkref_entry (re_match_context_t *mctx, Idx str_idx)
+static Idx search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
internal_function;
static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, Idx node,
Idx str_idx) internal_function;
@@ -91,13 +91,14 @@ static reg_errcode_t update_cur_sifted_s
static reg_errcode_t add_epsilon_src_nodes (re_dfa_t *dfa,
re_node_set *dest_nodes,
const re_node_set *candidates)
internal_function;
-static int check_dst_limits (re_match_context_t *mctx, re_node_set *limits,
+static int check_dst_limits (const re_match_context_t *mctx,
+ const re_node_set *limits,
Idx dst_node, Idx dst_idx, Idx src_node,
Idx src_idx) internal_function;
-static int check_dst_limits_calc_pos_1 (re_match_context_t *mctx,
+static int check_dst_limits_calc_pos_1 (const re_match_context_t *mctx,
int boundaries, Idx subexp_idx,
Idx from_node, Idx bkref_idx)
internal_function;
-static int check_dst_limits_calc_pos (re_match_context_t *mctx,
+static int check_dst_limits_calc_pos (const re_match_context_t *mctx,
Idx limit, Idx subexp_idx,
Idx node, Idx str_idx,
Idx bkref_idx) internal_function;
@@ -170,7 +171,7 @@ static unsigned int find_collation_seque
size_t name_len)
internal_function;
# endif /* _LIBC */
#endif /* RE_ENABLE_I18N */
-static Idx group_nodes_into_DFAstates (re_dfa_t *dfa,
+static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa,
const re_dfastate_t *state,
re_node_set *states_node,
bitset *states_ch) internal_function;
@@ -1855,7 +1856,7 @@ sub_epsilon_src_nodes (re_dfa_t *dfa, Id
static int
internal_function
-check_dst_limits (re_match_context_t *mctx, re_node_set *limits,
+check_dst_limits (const re_match_context_t *mctx, const re_node_set *limits,
Idx dst_node, Idx dst_idx, Idx src_node, Idx src_idx)
{
re_dfa_t *const dfa = mctx->dfa;
@@ -1891,7 +1892,7 @@ check_dst_limits (re_match_context_t *mc
static int
internal_function
-check_dst_limits_calc_pos_1 (re_match_context_t *mctx, int boundaries,
+check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
Idx subexp_idx, Idx from_node, Idx bkref_idx)
{
re_dfa_t *const dfa = mctx->dfa;
@@ -1973,7 +1974,8 @@ check_dst_limits_calc_pos_1 (re_match_co
static int
internal_function
-check_dst_limits_calc_pos (re_match_context_t *mctx, Idx limit, Idx subexp_idx,
+check_dst_limits_calc_pos (const re_match_context_t *mctx,
+ Idx limit, Idx subexp_idx,
Idx from_node, Idx str_idx, Idx bkref_idx)
{
struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
@@ -3484,7 +3486,7 @@ out_free:
static Idx
internal_function
-group_nodes_into_DFAstates (re_dfa_t *dfa, const re_dfastate_t *state,
+group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
re_node_set *dests_node, bitset *dests_ch)
{
reg_errcode_t err;
@@ -4203,7 +4205,7 @@ match_ctx_add_entry (re_match_context_t
static Idx
internal_function
-search_cur_bkref_entry (re_match_context_t *mctx, Idx str_idx)
+search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
{
Idx left, right, mid, last;
last = right = mctx->nbkref_ents;
--- config/srclist.txt 31 Aug 2005 22:51:09 -0000 1.93
+++ config/srclist.txt 31 Aug 2005 23:35:21 -0000
@@ -106,6 +106,7 @@ $LIBCSRC/stdlib/getsubopt.c lib gpl
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1278
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1280
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1281
+# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1282
#$LIBCSRC/posix/regcomp.c lib gpl
#
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1238
@@ -130,6 +131,7 @@ $LIBCSRC/stdlib/getsubopt.c lib gpl
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1241
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1248
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1281
+# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1282
#$LIBCSRC/posix/regex_internal.c lib gpl
#
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1054
@@ -155,6 +157,7 @@ $LIBCSRC/stdlib/getsubopt.c lib gpl
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1279
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1280
# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1281
+# http://sources.redhat.com/bugzilla/show_bug.cgi?id=1282
#$LIBCSRC/posix/regexec.c lib gpl
#
# c89 changes $LIBCSRC/string/strdup.c lib gpl