summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Midenkov <midenok@gmail.com>2022-10-05 17:46:50 +0300
committerAleksey Midenkov <midenok@gmail.com>2022-10-05 19:53:13 +0300
commit4eb8c35b363addd64e30ad0b5ce7988b328b07cd (patch)
treeff5811708f81e22405ed1d292920640daf1ca10e
parentc0eda62aec1de8b74ca51791df5ad142dee2ef08 (diff)
downloadmariadb-git-4eb8c35b363addd64e30ad0b5ce7988b328b07cd.tar.gz
MDEV-28576 Ability to manipulate List<const char *>
For "const char *" replace() and after() accepted const as "T *" and passed forward "void *". This cannot be cast implicitly, so we better use "const void *" instead of "void *" in the input interface. This way we avoid problems with using List for any const type.
-rw-r--r--sql/sql_list.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/sql/sql_list.h b/sql/sql_list.h
index a47acf57b54..b11239856f5 100644
--- a/sql/sql_list.h
+++ b/sql/sql_list.h
@@ -118,8 +118,8 @@ struct list_node :public Sql_alloc
{
list_node *next;
void *info;
- list_node(void *info_par,list_node *next_par)
- :next(next_par),info(info_par)
+ list_node(const void *info_par, list_node *next_par)
+ :next(next_par), info(const_cast<void *>(info_par))
{}
list_node() /* For end_of_list */
{
@@ -384,7 +384,7 @@ public:
#endif // LIST_EXTRA_DEBUG
protected:
- void after(void *info,list_node *node)
+ void after(const void *info, list_node *node)
{
list_node *new_node=new list_node(info,node->next);
node->next=new_node;
@@ -445,11 +445,11 @@ public:
{
el= &list->first;
}
- inline void *replace(void *element)
+ inline void *replace(const void *element)
{ // Return old element
void *tmp=current->info;
DBUG_ASSERT(current->info != 0);
- current->info=element;
+ current->info= const_cast<void *>(element);
return tmp;
}
void *replace(base_list &new_list)
@@ -472,7 +472,7 @@ public:
el=prev;
current=0; // Safeguard
}
- void after(void *element) // Insert element after current
+ void after(const void *element) // Insert element after current
{
list->after(element,current);
current=current->next;