@@ -262,38 +262,40 @@ pub unsafe fn decompress_c(
262262 bzfree : None ,
263263 opaque : std:: ptr:: null_mut :: < libc:: c_void > ( ) ,
264264 } ;
265- let mut ret: libc:: c_int ;
266265 if dest. is_null ( ) || dest_len. is_null ( ) || source. is_null ( ) {
267- return - ( 2 as libc :: c_int ) ;
266+ return BZ_PARAM_ERROR ;
268267 }
269268 strm. bzalloc = None ;
270269 strm. bzfree = None ;
271270 strm. opaque = std:: ptr:: null_mut :: < libc:: c_void > ( ) ;
272271 unsafe {
273- ret = BZ2_bzDecompressInit ( & mut strm, 0 , 0 ) ;
274- if ret != 0 as libc :: c_int {
272+ let ret = BZ2_bzDecompressInit ( & mut strm, 0 , 0 ) ;
273+ if ret != 0 {
275274 return ret;
276275 }
277276 strm. next_in = source as * mut libc:: c_char ;
278277 strm. next_out = dest. cast :: < core:: ffi:: c_char > ( ) ;
279278 strm. avail_in = source_len;
280279 strm. avail_out = * dest_len;
281- ret = BZ2_bzDecompress ( & mut strm) ;
282- if ret == 0 as libc:: c_int {
283- if strm. avail_out > 0 as libc:: c_int as libc:: c_uint {
280+ match BZ2_bzDecompress ( & mut strm) {
281+ BZ_OK => {
282+ if strm. avail_out > 0 {
283+ BZ2_bzDecompressEnd ( & mut strm) ;
284+ BZ_UNEXPECTED_EOF
285+ } else {
286+ BZ2_bzDecompressEnd ( & mut strm) ;
287+ BZ_OUTBUFF_FULL
288+ }
289+ }
290+ BZ_STREAM_END => {
291+ * dest_len = ( * dest_len) . wrapping_sub ( strm. avail_out ) ;
284292 BZ2_bzDecompressEnd ( & mut strm) ;
285- -( 7 as libc:: c_int )
286- } else {
293+ BZ_OK
294+ }
295+ ret => {
287296 BZ2_bzDecompressEnd ( & mut strm) ;
288- - ( 8 as libc :: c_int )
297+ ret
289298 }
290- } else if ret != 4 as libc:: c_int {
291- BZ2_bzDecompressEnd ( & mut strm) ;
292- return ret;
293- } else {
294- * dest_len = ( * dest_len) . wrapping_sub ( strm. avail_out ) ;
295- BZ2_bzDecompressEnd ( & mut strm) ;
296- return 0 as libc:: c_int ;
297299 }
298300 }
299301}
@@ -320,38 +322,40 @@ pub unsafe fn decompress_rs(
320322 bzfree : None ,
321323 opaque : std:: ptr:: null_mut :: < libc:: c_void > ( ) ,
322324 } ;
323- let mut ret: libc:: c_int ;
324325 if dest. is_null ( ) || dest_len. is_null ( ) || source. is_null ( ) {
325- return - ( 2 as libc :: c_int ) ;
326+ return BZ_PARAM_ERROR ;
326327 }
327328 strm. bzalloc = None ;
328329 strm. bzfree = None ;
329330 strm. opaque = std:: ptr:: null_mut :: < libc:: c_void > ( ) ;
330331 unsafe {
331- ret = BZ2_bzDecompressInit ( & mut strm, 0 , 0 ) ;
332- if ret != 0 as libc :: c_int {
332+ let ret = BZ2_bzDecompressInit ( & mut strm, 0 , 0 ) ;
333+ if ret != 0 {
333334 return ret;
334335 }
335336 strm. next_in = source as * mut libc:: c_char ;
336337 strm. next_out = dest. cast :: < core:: ffi:: c_char > ( ) ;
337338 strm. avail_in = source_len;
338339 strm. avail_out = * dest_len;
339- ret = BZ2_bzDecompress ( & mut strm) ;
340- if ret == 0 as libc:: c_int {
341- if strm. avail_out > 0 as libc:: c_int as libc:: c_uint {
340+ match BZ2_bzDecompress ( & mut strm) {
341+ BZ_OK => {
342+ if strm. avail_out > 0 {
343+ BZ2_bzDecompressEnd ( & mut strm) ;
344+ BZ_UNEXPECTED_EOF
345+ } else {
346+ BZ2_bzDecompressEnd ( & mut strm) ;
347+ BZ_OUTBUFF_FULL
348+ }
349+ }
350+ BZ_STREAM_END => {
351+ * dest_len = ( * dest_len) . wrapping_sub ( strm. avail_out ) ;
342352 BZ2_bzDecompressEnd ( & mut strm) ;
343- -( 7 as libc:: c_int )
344- } else {
353+ BZ_OK
354+ }
355+ ret => {
345356 BZ2_bzDecompressEnd ( & mut strm) ;
346- - ( 8 as libc :: c_int )
357+ ret
347358 }
348- } else if ret != 4 as libc:: c_int {
349- BZ2_bzDecompressEnd ( & mut strm) ;
350- return ret;
351- } else {
352- * dest_len = ( * dest_len) . wrapping_sub ( strm. avail_out ) ;
353- BZ2_bzDecompressEnd ( & mut strm) ;
354- return 0 as libc:: c_int ;
355359 }
356360 }
357361}
0 commit comments