@@ -140,23 +140,24 @@ int8_t _z_bytes_append_slice(_z_bytes_t *dst, _z_arc_slice_t *s) {
140140}
141141
142142int8_t _z_bytes_append_bytes (_z_bytes_t * dst , _z_bytes_t * src ) {
143- _Bool success = true ;
143+ int8_t res = _Z_RES_OK ;
144144 for (size_t i = 0 ; i < _z_bytes_num_slices (src ); ++ i ) {
145- _z_arc_slice_t * s = _z_bytes_get_slice (src , i );
146- success = success && _z_bytes_append_slice (dst , s ) == _Z_RES_OK ;
147- }
148- if (!success ) {
149- return _Z_ERR_SYSTEM_OUT_OF_MEMORY ;
145+ _z_arc_slice_t s ;
146+ _z_arc_slice_move (& s , _z_bytes_get_slice (src , i ));
147+ res = _z_bytes_append_slice (dst , & s );
148+ if (res != _Z_RES_OK ) {
149+ break ;
150+ }
150151 }
151152
152- _z_svec_release ( & src -> _slices );
153- return _Z_RES_OK ;
153+ _z_bytes_drop ( src );
154+ return res ;
154155}
155156
156157int8_t _z_bytes_serialize_from_pair (_z_bytes_t * out , _z_bytes_t * first , _z_bytes_t * second ) {
157158 * out = _z_bytes_null ();
158159 _z_bytes_iterator_writer_t writer = _z_bytes_get_iterator_writer (out );
159- _Z_RETURN_IF_ERR (_z_bytes_iterator_writer_write (& writer , first ));
160+ _Z_CLEAN_RETURN_IF_ERR (_z_bytes_iterator_writer_write (& writer , first ), _z_bytes_drop ( second ));
160161 _Z_CLEAN_RETURN_IF_ERR (_z_bytes_iterator_writer_write (& writer , second ), _z_bytes_drop (out ));
161162
162163 return _Z_RES_OK ;
@@ -341,7 +342,6 @@ int64_t _z_bytes_reader_tell(const _z_bytes_reader_t *reader) { return reader->b
341342
342343int8_t _z_bytes_reader_read (_z_bytes_reader_t * reader , uint8_t * buf , size_t len ) {
343344 uint8_t * buf_start = buf ;
344-
345345 for (size_t i = reader -> slice_idx ; i < _z_bytes_num_slices (reader -> bytes ); ++ i ) {
346346 _z_arc_slice_t * s = _z_bytes_get_slice (reader -> bytes , i );
347347 size_t remaining = _z_arc_slice_len (s ) - reader -> in_slice_idx ;
@@ -415,13 +415,12 @@ _z_bytes_iterator_t _z_bytes_get_iterator(const _z_bytes_t *bytes) {
415415 return (_z_bytes_iterator_t ){._reader = _z_bytes_get_reader (bytes )};
416416}
417417
418- _Bool _z_bytes_iterator_next (_z_bytes_iterator_t * iter , _z_bytes_t * b ) {
418+ int8_t _z_bytes_iterator_next (_z_bytes_iterator_t * iter , _z_bytes_t * b ) {
419419 * b = _z_bytes_null ();
420420 _z_zint_t len ;
421421 if (_z_bytes_reader_read_zint (& iter -> _reader , & len ) != _Z_RES_OK ) {
422422 return _Z_ERR_DID_NOT_READ ;
423423 }
424-
425424 return _z_bytes_reader_read_slices (& iter -> _reader , len , b );
426425}
427426
@@ -454,7 +453,7 @@ int8_t _z_bytes_writer_ensure_cache(_z_bytes_writer_t *writer) {
454453}
455454
456455int8_t _z_bytes_writer_write (_z_bytes_writer_t * writer , const uint8_t * src , size_t len ) {
457- if (writer -> cache_size == 0 ) { // no cache append data as a single slice
456+ if (writer -> cache_size == 0 ) { // no cache - append data as a single slice
458457 _z_slice_t s = _z_slice_wrap_copy (src , len );
459458 if (s .len != len ) return _Z_ERR_SYSTEM_OUT_OF_MEMORY ;
460459 _z_arc_slice_t arc_s = _z_arc_slice_wrap (s , 0 , len );
@@ -485,7 +484,7 @@ _z_bytes_iterator_writer_t _z_bytes_get_iterator_writer(_z_bytes_t *bytes) {
485484int8_t _z_bytes_iterator_writer_write (_z_bytes_iterator_writer_t * writer , _z_bytes_t * src ) {
486485 uint8_t l_buf [16 ];
487486 size_t l_len = _z_zsize_encode_buf (l_buf , _z_bytes_len (src ));
488- _Z_RETURN_IF_ERR (_z_bytes_writer_write (& writer -> writer , l_buf , l_len ));
487+ _Z_CLEAN_RETURN_IF_ERR (_z_bytes_writer_write (& writer -> writer , l_buf , l_len ), _z_bytes_drop ( src ));
489488 _Z_CLEAN_RETURN_IF_ERR (_z_bytes_append_bytes (writer -> writer .bytes , src ), _z_bytes_drop (src ));
490489
491490 return _Z_RES_OK ;
0 commit comments