]> git.ipfire.org Git - ipfire-3.x.git/blame - compat-ncurses/patches/0001-Fix-errors-in-type-conversion.patch
compat-ncurses: Update to 5.9
[ipfire-3.x.git] / compat-ncurses / patches / 0001-Fix-errors-in-type-conversion.patch
CommitLineData
93b1d199
MT
1From 6e12cb73e23e8e9488c6db1c4710bb4b3d2b48c3 Mon Sep 17 00:00:00 2001
2From: Adam Jiang <jiang.adam@gmail.com>
3Date: Fri, 1 Aug 2014 19:58:40 +0900
4Subject: [PATCH 1/2] Fix errors in type conversion
5
6Basically, converting to 'void*' is not a good idea. However, if that
7conversion is unavoidable, it should be done in a proper way. 'const_cast'
8itself could not convert type 'T*' to 'void *', this patch adds
9'reintepret_cast' to do it correctly.
10
11At the same time, function that returns on 'const' member like 'void*' should
12not be declared as 'const'.
13---
14 c++/cursesf.h | 12 +++++++-----
15 c++/cursesm.h | 10 +++++-----
16 c++/cursesp.h | 9 +++++----
17 3 files changed, 17 insertions(+), 14 deletions(-)
18
19diff --git a/c++/cursesf.h b/c++/cursesf.h
20index 70a30c3..23b3022 100644
21--- a/c++/cursesf.h
22+++ b/c++/cursesf.h
23@@ -673,7 +673,8 @@ protected:
24 const T* p_UserData = STATIC_CAST(T*)(0))
25 : NCursesForm(nlines,ncols,begin_y,begin_x) {
26 if (form)
27- set_user (const_cast<void *>(p_UserData));
28+ set_user (const_cast<void *>(reinterpret_cast<const void*>
29+ (p_UserData)));
30 }
31
32 public:
33@@ -683,7 +684,7 @@ public:
34 bool autoDelete_Fields=FALSE)
35 : NCursesForm (Fields, with_frame, autoDelete_Fields) {
36 if (form)
37- set_user (const_cast<void *>(p_UserData));
38+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
39 };
40
41 NCursesUserForm (NCursesFormField Fields[],
42@@ -697,19 +698,20 @@ public:
43 : NCursesForm (Fields, nlines, ncols, begin_y, begin_x,
44 with_frame, autoDelete_Fields) {
45 if (form)
46- set_user (const_cast<void *>(p_UserData));
47+ set_user (const_cast<void *>(reinterpret_cast<const void*>
48+ (p_UserData)));
49 };
50
51 virtual ~NCursesUserForm() {
52 };
53
54- inline T* UserData (void) const {
55+ inline T* UserData (void) {
56 return reinterpret_cast<T*>(get_user ());
57 };
58
59 inline virtual void setUserData (const T* p_UserData) {
60 if (form)
61- set_user (const_cast<void *>(p_UserData));
62+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
63 }
64
65 };
66diff --git a/c++/cursesm.h b/c++/cursesm.h
67index d9c2273..545ed49 100644
68--- a/c++/cursesm.h
69+++ b/c++/cursesm.h
70@@ -631,7 +631,7 @@ protected:
71 const T* p_UserData = STATIC_CAST(T*)(0))
72 : NCursesMenu(nlines,ncols,begin_y,begin_x) {
73 if (menu)
74- set_user (const_cast<void *>(p_UserData));
75+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
76 }
77
78 public:
79@@ -641,7 +641,7 @@ public:
80 bool autoDelete_Items=FALSE)
81 : NCursesMenu (Items, with_frame, autoDelete_Items) {
82 if (menu)
83- set_user (const_cast<void *>(p_UserData));
84+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
85 };
86
87 NCursesUserMenu (NCursesMenuItem Items[],
88@@ -653,19 +653,19 @@ public:
89 bool with_frame=FALSE)
90 : NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) {
91 if (menu)
92- set_user (const_cast<void *>(p_UserData));
93+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
94 };
95
96 virtual ~NCursesUserMenu() {
97 };
98
99- inline T* UserData (void) const {
100+ inline T* UserData (void) {
101 return reinterpret_cast<T*>(get_user ());
102 };
103
104 inline virtual void setUserData (const T* p_UserData) {
105 if (menu)
106- set_user (const_cast<void *>(p_UserData));
107+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
108 }
109 };
110
111diff --git a/c++/cursesp.h b/c++/cursesp.h
112index 9b63d6d..661e4a9 100644
113--- a/c++/cursesp.h
114+++ b/c++/cursesp.h
115@@ -236,7 +236,8 @@ public:
116 : NCursesPanel (nlines, ncols, begin_y, begin_x)
117 {
118 if (p)
119- set_user (const_cast<void *>(p_UserData));
120+ set_user (const_cast<void *>(reinterpret_cast<const void*>
121+ (p_UserData)));
122 };
123 // This creates an user panel of the requested size with associated
124 // user data pointed to by p_UserData.
125@@ -244,14 +245,14 @@ public:
126 NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel()
127 {
128 if (p)
129- set_user(const_cast<void *>(p_UserData));
130+ set_user(const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
131 };
132 // This creates an user panel associated with the ::stdscr and user data
133 // pointed to by p_UserData.
134
135 virtual ~NCursesUserPanel() {};
136
137- T* UserData (void) const
138+ T* UserData (void)
139 {
140 return reinterpret_cast<T*>(get_user ());
141 };
142@@ -260,7 +261,7 @@ public:
143 virtual void setUserData (const T* p_UserData)
144 {
145 if (p)
146- set_user (const_cast<void *>(p_UserData));
147+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
148 }
149 // Associate the user panel with the user data pointed to by p_UserData.
150 };
151--
1521.8.5.2 (Apple Git-48)
153