@@ -1058,18 +1058,6 @@ cdef class TextReader:
1058
1058
1059
1059
conv = self ._get_converter(i, name)
1060
1060
1061
- # XXX
1062
- na_flist = set ()
1063
- if self .na_filter:
1064
- na_list, na_flist = self ._get_na_list(i, name)
1065
- if na_list is None :
1066
- na_filter = 0
1067
- else :
1068
- na_filter = 1
1069
- na_hashset = kset_from_list(na_list)
1070
- else :
1071
- na_filter = 0
1072
-
1073
1061
col_dtype = None
1074
1062
if self .dtype is not None :
1075
1063
if isinstance (self .dtype, dict ):
@@ -1094,13 +1082,26 @@ cdef class TextReader:
1094
1082
self .c_encoding)
1095
1083
continue
1096
1084
1097
- # Should return as the desired dtype (inferred or specified)
1098
- col_res, na_count = self ._convert_tokens(
1099
- i, start, end, name, na_filter, na_hashset,
1100
- na_flist, col_dtype)
1085
+ # XXX
1086
+ na_flist = set ()
1087
+ if self .na_filter:
1088
+ na_list, na_flist = self ._get_na_list(i, name)
1089
+ if na_list is None :
1090
+ na_filter = 0
1091
+ else :
1092
+ na_filter = 1
1093
+ na_hashset = kset_from_list(na_list)
1094
+ else :
1095
+ na_filter = 0
1101
1096
1102
- if na_filter:
1103
- self ._free_na_set(na_hashset)
1097
+ try :
1098
+ # Should return as the desired dtype (inferred or specified)
1099
+ col_res, na_count = self ._convert_tokens(
1100
+ i, start, end, name, na_filter, na_hashset,
1101
+ na_flist, col_dtype)
1102
+ finally :
1103
+ if na_filter:
1104
+ self ._free_na_set(na_hashset)
1104
1105
1105
1106
if upcast_na and na_count > 0 :
1106
1107
col_res = _maybe_upcast(col_res)
@@ -2047,6 +2048,7 @@ cdef kh_str_t* kset_from_list(list values) except NULL:
2047
2048
2048
2049
# None creeps in sometimes, which isn't possible here
2049
2050
if not isinstance (val, bytes):
2051
+ kh_destroy_str(table)
2050
2052
raise ValueError (' Must be all encoded bytes' )
2051
2053
2052
2054
k = kh_put_str(table, PyBytes_AsString(val), & ret)
0 commit comments