diff --git a/doc/source/whatsnew/v1.4.0.rst b/doc/source/whatsnew/v1.4.0.rst index 4c3e53ddcfa26..46b79c3dd6d71 100644 --- a/doc/source/whatsnew/v1.4.0.rst +++ b/doc/source/whatsnew/v1.4.0.rst @@ -877,6 +877,7 @@ I/O - Bug in :func:`read_csv` silently ignoring errors when failing to create a memory-mapped file (:issue:`44766`) - Bug in :func:`read_csv` when passing a ``tempfile.SpooledTemporaryFile`` opened in binary mode (:issue:`44748`) - Bug in :func:`read_json` raising ``ValueError`` when attempting to parse json strings containing "://" (:issue:`36271`) +- Bug in :func:`read_csv` when ``engine="c"`` and ``encoding_errors=None`` which caused a segfault (:issue:`45180`) - Period diff --git a/pandas/_libs/parsers.pyx b/pandas/_libs/parsers.pyx index 4f80936359263..08c885fba172a 100644 --- a/pandas/_libs/parsers.pyx +++ b/pandas/_libs/parsers.pyx @@ -375,6 +375,8 @@ cdef class TextReader: # set encoding for native Python and C library if isinstance(encoding_errors, str): encoding_errors = encoding_errors.encode("utf-8") + elif encoding_errors is None: + encoding_errors = b"strict" Py_INCREF(encoding_errors) self.encoding_errors = PyBytes_AsString(encoding_errors) diff --git a/pandas/tests/io/test_common.py b/pandas/tests/io/test_common.py index 43a5a33a0fdd4..b458f3351c860 100644 --- a/pandas/tests/io/test_common.py +++ b/pandas/tests/io/test_common.py @@ -555,9 +555,8 @@ def test_encoding_errors(encoding_errors, format): bad_encoding = b"\xe4" if format == "csv": - return - content = bad_encoding + b"\n" + bad_encoding - reader = pd.read_csv + content = b"," + bad_encoding + b"\n" + bad_encoding * 2 + b"," + bad_encoding + reader = partial(pd.read_csv, index_col=0) else: content = ( b'{"'