Skip to content

zstd reader does not transmit upstream reader failure #372

@sloonz

Description

@sloonz

If the underlying reader (the one given to zstd.NewReader) fails and returns an error, zstd just returns EOF instead of transmitting the error :

package main

import (
	"fmt"
	"log"	
	"io"
	"github.com/klauspost/compress/zstd"
)

type errorReader struct{}

func (r *errorReader) Read(p []byte) (int, error) {
	return 0, fmt.Errorf("i'm a failure")
}

func main() {
	er := new(errorReader)
	zr, err := zstd.NewReader(er)	
	if err != nil {
		log.Fatal(err)
	}
	
	_, err = io.ReadAll(zr)
	if err != nil {
		log.Fatal(err)
	}
	
	log.Print("reached eof without any error !")
}

Expected result : "I'm a failure"
Actual result: "reached eof without any error !"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions