@@ -135,6 +135,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
135
135
if hdc. is_null ( ) {
136
136
tx. send ( Err ( format ! ( "GetDC function failed: {}" ,
137
137
os:: error_string( os:: errno( ) as uint) ) ) ) ;
138
+ unsafe { ffi:: DestroyWindow ( dummy_window) ; }
138
139
return ;
139
140
}
140
141
hdc
@@ -162,6 +163,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
162
163
if pf_index == 0 {
163
164
tx. send ( Err ( format ! ( "ChoosePixelFormat function failed: {}" ,
164
165
os:: error_string( os:: errno( ) as uint) ) ) ) ;
166
+ unsafe { ffi:: DestroyWindow ( dummy_window) ; }
165
167
return ;
166
168
}
167
169
@@ -170,6 +172,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
170
172
{
171
173
tx. send ( Err ( format ! ( "DescribePixelFormat function failed: {}" ,
172
174
os:: error_string( os:: errno( ) as uint) ) ) ) ;
175
+ unsafe { ffi:: DestroyWindow ( dummy_window) ; }
173
176
return ;
174
177
}
175
178
@@ -181,6 +184,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
181
184
if ffi:: SetPixelFormat ( dummy_hdc, 1 , & pixel_format) == 0 {
182
185
tx. send ( Err ( format ! ( "SetPixelFormat function failed: {}" ,
183
186
os:: error_string( os:: errno( ) as uint) ) ) ) ;
187
+ ffi:: DestroyWindow ( dummy_window) ;
184
188
return ;
185
189
}
186
190
}
@@ -191,6 +195,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
191
195
if ctxt. is_null ( ) {
192
196
tx. send ( Err ( format ! ( "wglCreateContext function failed: {}" ,
193
197
os:: error_string( os:: errno( ) as uint) ) ) ) ;
198
+ unsafe { ffi:: DestroyWindow ( dummy_window) ; }
194
199
return ;
195
200
}
196
201
ctxt
@@ -259,6 +264,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
259
264
if hdc. is_null ( ) {
260
265
tx. send ( Err ( format ! ( "GetDC function failed: {}" ,
261
266
os:: error_string( os:: errno( ) as uint) ) ) ) ;
267
+ unsafe { ffi:: DestroyWindow ( real_window) ; }
262
268
return ;
263
269
}
264
270
hdc
@@ -269,6 +275,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
269
275
if ffi:: SetPixelFormat ( hdc, 1 , & pixel_format) == 0 {
270
276
tx. send ( Err ( format ! ( "SetPixelFormat function failed: {}" ,
271
277
os:: error_string( os:: errno( ) as uint) ) ) ) ;
278
+ ffi:: DestroyWindow ( real_window) ;
272
279
return ;
273
280
}
274
281
}
@@ -299,6 +306,7 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
299
306
if ctxt. is_null ( ) {
300
307
tx. send ( Err ( format ! ( "OpenGL context creation failed: {}" ,
301
308
os:: error_string( os:: errno( ) as uint) ) ) ) ;
309
+ unsafe { ffi:: DestroyWindow ( real_window) ; }
302
310
return ;
303
311
}
304
312
@@ -324,6 +332,8 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
324
332
if lib. is_null ( ) {
325
333
tx. send ( Err ( format ! ( "LoadLibrary function failed: {}" ,
326
334
os:: error_string( os:: errno( ) as uint) ) ) ) ;
335
+ unsafe { ffi:: wglDeleteContext ( context) ; }
336
+ unsafe { ffi:: DestroyWindow ( real_window) ; }
327
337
return ;
328
338
}
329
339
lib
0 commit comments