diff --git a/src/zlib/zcl_abapgit_zlib.clas.abap b/src/zlib/zcl_abapgit_zlib.clas.abap index d90167582..6c9808258 100644 --- a/src/zlib/zcl_abapgit_zlib.clas.abap +++ b/src/zlib/zcl_abapgit_zlib.clas.abap @@ -153,7 +153,6 @@ CLASS ZCL_ABAPGIT_ZLIB IMPLEMENTATION. CASE lv_btype. WHEN '00'. not_compressed( ). - EXIT. WHEN '01'. fixed( ). decode_loop( ). @@ -446,13 +445,16 @@ CLASS ZCL_ABAPGIT_ZLIB IMPLEMENTATION. DATA: lv_len TYPE i, lv_nlen TYPE i ##NEEDED. + DATA lv_bytes TYPE xstring. - go_stream->take_bits( 5 ). +* skip any remaining bits in current partially processed byte + go_stream->clear_bits( ). lv_len = go_stream->take_int( 16 ). lv_nlen = go_stream->take_int( 16 ). - gv_out = go_stream->take_bytes( lv_len ). + lv_bytes = go_stream->take_bytes( lv_len ). + CONCATENATE gv_out lv_bytes INTO gv_out IN BYTE MODE. ENDMETHOD. diff --git a/src/zlib/zcl_abapgit_zlib_stream.clas.abap b/src/zlib/zcl_abapgit_zlib_stream.clas.abap index b65d7b8e7..8f9d73c87 100644 --- a/src/zlib/zcl_abapgit_zlib_stream.clas.abap +++ b/src/zlib/zcl_abapgit_zlib_stream.clas.abap @@ -23,23 +23,29 @@ CLASS zcl_abapgit_zlib_stream DEFINITION "! Take bytes, there's an implicit realignment to start at the beginning of a byte "! i.e. if next bit of current byte is not the first bit, then this byte is skipped "! and the bytes are taken from the next one. - "! @parameter iv_length |

Number of BYTES to read (not bits)

- "! @parameter rv_bytes |

Bytes taken

+ "! @parameter iv_length |

+ "! @parameter rv_bytes |

METHODS take_bytes IMPORTING - iv_length TYPE i + !iv_length TYPE i RETURNING - VALUE(rv_bytes) TYPE xstring. + VALUE(rv_bytes) TYPE xstring . + METHODS clear_bits . PROTECTED SECTION. PRIVATE SECTION. - DATA: mv_compressed TYPE xstring, - mv_bits TYPE string. + DATA mv_bits TYPE string . + DATA mv_compressed TYPE xstring . ENDCLASS. -CLASS zcl_abapgit_zlib_stream IMPLEMENTATION. +CLASS ZCL_ABAPGIT_ZLIB_STREAM IMPLEMENTATION. + + + METHOD clear_bits. + CLEAR mv_bits. + ENDMETHOD. METHOD constructor. diff --git a/src/zlib/zcl_abapgit_zlib_stream.clas.testclasses.abap b/src/zlib/zcl_abapgit_zlib_stream.clas.testclasses.abap index a4babe7e8..288723d4a 100644 --- a/src/zlib/zcl_abapgit_zlib_stream.clas.testclasses.abap +++ b/src/zlib/zcl_abapgit_zlib_stream.clas.testclasses.abap @@ -4,7 +4,7 @@ CLASS ltcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS FINAL. PRIVATE SECTION. - METHODS: test FOR TESTING. + METHODS test FOR TESTING. ENDCLASS.