diff --git a/scikits/learn/datasets/_svmlight_format.cpp b/scikits/learn/datasets/_svmlight_format.cpp index b19d71eae45..ef5916a3ef8 100644 --- a/scikits/learn/datasets/_svmlight_format.cpp +++ b/scikits/learn/datasets/_svmlight_format.cpp @@ -269,6 +269,9 @@ void parse_file(char const *file_path, file_stream.rdbuf()->pubsetbuf(&buffer[0], buffer_size); file_stream.open(file_path); + if (!file_stream) + throw std::ios_base::failure("File doesn't exist!"); + std::string line; while (std::getline(file_stream, line)) parse_line(line, data, indices, indptr, labels); diff --git a/scikits/learn/datasets/tests/test_svmlight_format.py b/scikits/learn/datasets/tests/test_svmlight_format.py index be849cd21ee..fedf53c7dd2 100644 --- a/scikits/learn/datasets/tests/test_svmlight_format.py +++ b/scikits/learn/datasets/tests/test_svmlight_format.py @@ -67,3 +67,7 @@ def test_load_invalid_file(): @raises(TypeError) def test_not_a_filename(): load_svmlight_file(1) + +@raises(IOError) +def test_invalid_filename(): + load_svmlight_file("trou pic nic douille")