@@ -939,6 +939,32 @@ int git_filter_buffered_stream_new(
939939 return 0 ;
940940}
941941
942+ static int setup_stream (
943+ git_writestream * * out ,
944+ git_filter_entry * fe ,
945+ git_filter_list * filters ,
946+ git_writestream * last_stream )
947+ {
948+ #ifndef GIT_DEPRECATE_HARD
949+ GIT_ASSERT (fe -> filter -> stream || fe -> filter -> apply );
950+
951+ /*
952+ * If necessary, create a stream that proxies the traditional
953+ * application.
954+ */
955+ if (!fe -> filter -> stream ) {
956+ /* Create a stream that proxies the one-shot apply */
957+ return git_filter_buffered_stream_new (out ,
958+ fe -> filter , fe -> filter -> apply , filters -> temp_buf ,
959+ & fe -> payload , & filters -> source , last_stream );
960+ }
961+ #endif
962+
963+ GIT_ASSERT (fe -> filter -> stream );
964+ return fe -> filter -> stream (out , fe -> filter ,
965+ & fe -> payload , & filters -> source , last_stream );
966+ }
967+
942968static int stream_list_init (
943969 git_writestream * * out ,
944970 git_vector * streams ,
@@ -960,22 +986,11 @@ static int stream_list_init(
960986 for (i = 0 ; i < git_array_size (filters -> filters ); ++ i ) {
961987 size_t filter_idx = (filters -> source .mode == GIT_FILTER_TO_WORKTREE ) ?
962988 git_array_size (filters -> filters ) - 1 - i : i ;
989+
963990 git_filter_entry * fe = git_array_get (filters -> filters , filter_idx );
964991 git_writestream * filter_stream ;
965992
966- GIT_ASSERT (fe -> filter -> stream || fe -> filter -> apply );
967-
968- /* If necessary, create a stream that proxies the traditional
969- * application.
970- */
971- if (fe -> filter -> stream )
972- error = fe -> filter -> stream (& filter_stream , fe -> filter ,
973- & fe -> payload , & filters -> source , last_stream );
974- else
975- /* Create a stream that proxies the one-shot apply */
976- error = git_filter_buffered_stream_new (& filter_stream ,
977- fe -> filter , fe -> filter -> apply , filters -> temp_buf ,
978- & fe -> payload , & filters -> source , last_stream );
993+ error = setup_stream (& filter_stream , fe , filters , last_stream );
979994
980995 if (error < 0 )
981996 goto out ;
0 commit comments