@@ -893,6 +893,17 @@ static int buffered_stream_write(
893893 return git_str_put (& buffered_stream -> input , buffer , len );
894894}
895895
896+ #ifndef GIT_DEPRECATE_HARD
897+ # define BUF_TO_STRUCT (b , s ) \
898+ (b)->ptr = (s)->ptr; \
899+ (b)->size = (s)->size; \
900+ (b)->reserved = (s)->asize;
901+ # define STRUCT_TO_BUF (s , b ) \
902+ (s)->ptr = (b)->ptr; \
903+ (s)->size = (b)->size; \
904+ (s)->asize = (b)->reserved;
905+ #endif
906+
896907static int buffered_stream_close (git_writestream * s )
897908{
898909 struct buffered_stream * buffered_stream = (struct buffered_stream * )s ;
@@ -902,6 +913,25 @@ static int buffered_stream_close(git_writestream *s)
902913
903914 GIT_ASSERT_ARG (buffered_stream );
904915
916+ #ifndef GIT_DEPRECATE_HARD
917+ if (buffered_stream -> write_fn == NULL ) {
918+ git_buf legacy_output = GIT_BUF_INIT ,
919+ legacy_input = GIT_BUF_INIT ;
920+
921+ BUF_TO_STRUCT (& legacy_output , buffered_stream -> output );
922+ BUF_TO_STRUCT (& legacy_input , & buffered_stream -> input );
923+
924+ error = buffered_stream -> legacy_write_fn (
925+ buffered_stream -> filter ,
926+ buffered_stream -> payload ,
927+ & legacy_output ,
928+ & legacy_input ,
929+ buffered_stream -> source );
930+
931+ STRUCT_TO_BUF (buffered_stream -> output , & legacy_output );
932+ STRUCT_TO_BUF (& buffered_stream -> input , & legacy_input );
933+ } else
934+ #endif
905935 error = buffered_stream -> write_fn (
906936 buffered_stream -> filter ,
907937 buffered_stream -> payload ,
0 commit comments