@@ -54,16 +54,22 @@ Array2D<Cell,debug>::Array2D(int xsize, int ysize){
54
54
}
55
55
m_xsize=xsize;
56
56
m_ysize=ysize;
57
- if (m_xsize>0 && m_ysize>0 ){
57
+ if (m_xsize>0 && m_ysize>0 )
58
+ {
58
59
m_cells=CellArray2d (new CellArray[m_xsize], [](auto ptr){ delete[] ptr; });
59
60
for (int i=0 ; i<m_xsize; i++)
61
+ {
60
62
m_cells[i]=CellArray (new Cell[m_ysize], [](auto ptr){ delete[] ptr; });
63
+ }
61
64
}
62
- else {
65
+ else
66
+ {
67
+ std::cerr << __func__ << " Invalid size: " << " m_xsize= " << m_xsize << " m_ysize= " << m_ysize << " - resetting " << std::endl;
63
68
m_xsize=m_ysize=0 ;
64
- m_cells= 0 ;
69
+ m_cells. reset () ;
65
70
}
66
- if (debug){
71
+ if (debug)
72
+ {
67
73
std::cerr << __func__ << std::endl;
68
74
std::cerr << " m_xsize= " << m_xsize<< std::endl;
69
75
std::cerr << " m_ysize= " << m_ysize<< std::endl;
@@ -72,23 +78,40 @@ Array2D<Cell,debug>::Array2D(int xsize, int ysize){
72
78
73
79
template <class Cell , const bool debug>
74
80
Array2D<Cell,debug> & Array2D<Cell,debug>::operator =(const Array2D<Cell,debug> & g){
75
- if (debug || m_xsize!=g.m_xsize || m_ysize!=g.m_ysize ){
81
+ if (debug || m_xsize!=g.m_xsize || m_ysize!=g.m_ysize )
82
+ {
76
83
// delete memory
77
84
if (m_cells)
78
85
{
79
86
m_cells.reset ();
80
87
}
81
88
m_xsize=g.m_xsize ;
82
89
m_ysize=g.m_ysize ;
83
- m_cells=CellArray2d (new CellArray[m_xsize], [](auto ptr){ delete[] ptr; });
84
- for (int i=0 ; i<m_xsize; i++)
85
- m_cells[i]=CellArray (new Cell[m_ysize], [](auto ptr){ delete[] ptr; });
90
+ if (m_xsize > 0 && m_ysize > 0 )
91
+ {
92
+ m_cells = CellArray2d (new CellArray[m_xsize], [](auto ptr) { delete[] ptr; });
93
+ for (int i = 0 ; i < m_xsize; i++)
94
+ {
95
+ m_cells[i] = CellArray (new Cell[m_ysize], [](auto ptr) { delete[] ptr; });
96
+ }
97
+ }
98
+ else
99
+ {
100
+ std::cerr << __func__ << " Invalid size: " << " m_xsize= " << m_xsize << " m_ysize= " << m_ysize << " - resetting " << std::endl;
101
+ m_xsize = m_ysize = 0 ;
102
+ m_cells.reset ();
103
+ }
86
104
}
87
105
for (int x=0 ; x<m_xsize; x++)
88
- for (int y=0 ; y<m_ysize; y++)
89
- m_cells[x][y]=g.m_cells [x][y];
106
+ {
107
+ for (int y = 0 ; y < m_ysize; y++)
108
+ {
109
+ m_cells[x][y] = g.m_cells [x][y];
110
+ }
111
+ }
90
112
91
- if (debug){
113
+ if (debug)
114
+ {
92
115
std::cerr << __func__ << std::endl;
93
116
std::cerr << " m_xsize= " << m_xsize<< std::endl;
94
117
std::cerr << " m_ysize= " << m_ysize<< std::endl;
@@ -97,20 +120,33 @@ Array2D<Cell,debug> & Array2D<Cell,debug>::operator=(const Array2D<Cell,debug> &
97
120
}
98
121
99
122
template <class Cell , const bool debug>
100
- Array2D<Cell,debug>::Array2D(const Array2D<Cell,debug> & g){
123
+ Array2D<Cell,debug>::Array2D(const Array2D<Cell,debug> & g)
124
+ {
101
125
// delete memory
102
126
if (m_cells)
103
127
{
104
128
m_cells.reset ();
105
129
}
106
130
m_xsize=g.m_xsize ;
107
131
m_ysize=g.m_ysize ;
108
- m_cells=CellArray2d (new CellArray[m_xsize], [](auto ptr){ delete[] ptr; });
109
- for (int x=0 ; x<m_xsize; x++){
110
- m_cells[x]=CellArray (new Cell[m_ysize], [](auto ptr){ delete[] ptr; });
111
- for (int y=0 ; y<m_ysize; y++)
112
- m_cells[x][y]=g.m_cells [x][y];
113
- }
132
+ if (m_xsize > 0 && m_ysize > 0 )
133
+ {
134
+ m_cells = CellArray2d (new CellArray[m_xsize], [](auto ptr) { delete[] ptr; });
135
+ for (int x = 0 ; x < m_xsize; x++)
136
+ {
137
+ m_cells[x] = CellArray (new Cell[m_ysize], [](auto ptr) { delete[] ptr; });
138
+ for (int y = 0 ; y < m_ysize; y++)
139
+ {
140
+ m_cells[x][y] = g.m_cells [x][y];
141
+ }
142
+ }
143
+ }
144
+ else
145
+ {
146
+ std::cerr << __func__ << " Invalid size: " << " m_xsize= " << m_xsize << " m_ysize= " << m_ysize << " - resetting " << std::endl;
147
+ m_xsize=m_ysize=0 ;
148
+ m_cells.reset ();
149
+ }
114
150
if (debug){
115
151
std::cerr << __func__ << std::endl;
116
152
std::cerr << " m_xsize= " << m_xsize<< std::endl;
@@ -122,8 +158,8 @@ template <class Cell, const bool debug>
122
158
Array2D<Cell,debug>::~Array2D (){
123
159
if (debug){
124
160
std::cerr << __func__ << std::endl;
125
- std::cerr << " m_xsize= " << m_xsize<< std::endl;
126
- std::cerr << " m_ysize= " << m_ysize<< std::endl;
161
+ std::cerr << " m_xsize= " << m_xsize<< std::endl;
162
+ std::cerr << " m_ysize= " << m_ysize<< std::endl;
127
163
}
128
164
// delete memory
129
165
if (m_cells)
@@ -136,8 +172,8 @@ template <class Cell, const bool debug>
136
172
void Array2D<Cell,debug>::clear(){
137
173
if (debug){
138
174
std::cerr << __func__ << std::endl;
139
- std::cerr << " m_xsize= " << m_xsize<< std::endl;
140
- std::cerr << " m_ysize= " << m_ysize<< std::endl;
175
+ std::cerr << " m_xsize= " << m_xsize<< std::endl;
176
+ std::cerr << " m_ysize= " << m_ysize<< std::endl;
141
177
}
142
178
// delete memory
143
179
if (m_cells)
@@ -151,8 +187,13 @@ void Array2D<Cell,debug>::clear(){
151
187
152
188
template <class Cell , const bool debug>
153
189
void Array2D<Cell,debug>::resize(int xmin, int ymin, int xmax, int ymax){
154
- int xsize=xmax-xmin;
155
- int ysize=ymax-ymin;
190
+ int xsize = xmax-xmin;
191
+ int ysize = ymax-ymin;
192
+ if (xsize <= 0 || ysize <= 0 )
193
+ {
194
+ std::cerr << __func__ << " Invalid reset size: " << " xsize= " << xsize << " ysize= " << ysize << " - no-op " << std::endl;
195
+ return ;
196
+ }
156
197
CellArray2d newcells=CellArray2d (new CellArray[xsize], [](auto ptr){ delete[] ptr; });
157
198
for (int x=0 ; x<xsize; x++){
158
199
newcells[x]=CellArray (new Cell[ysize], [](auto ptr){ delete[] ptr; });;
0 commit comments