From 8d7ab4318adc91753d70417920e415b77d793f9f Mon Sep 17 00:00:00 2001 From: searchivairus Date: Thu, 8 Feb 2018 22:48:03 -0500 Subject: [PATCH] Fixing a bug. --- python_bindings/nmslib.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/python_bindings/nmslib.cc b/python_bindings/nmslib.cc index 1a3874d..499a0c0 100644 --- a/python_bindings/nmslib.cc +++ b/python_bindings/nmslib.cc @@ -177,7 +177,7 @@ struct IndexWrapper { py::array_t temp(input); std::vector tempVect(temp.data(0), temp.data(0) + temp.size()); auto vectSpacePtr = reinterpret_cast*>(space.get()); - vectSpacePtr->CreateObjFromVect(id, -1, tempVect); + return vectSpacePtr->CreateObjFromVect(id, -1, tempVect); // This way it will not always work properly //return new Object(id, -1, temp.size() * sizeof(dist_t), temp.data(0)); } @@ -185,7 +185,7 @@ struct IndexWrapper { py::array_t temp(input); std::vector tempVect(temp.data(0), temp.data(0) + temp.size()); auto vectSiftPtr = reinterpret_cast(space.get()); - vectSiftPtr->CreateObjFromUint8Vect(id, -1, tempVect); + return vectSiftPtr->CreateObjFromUint8Vect(id, -1, tempVect); } case DATATYPE_OBJECT_AS_STRING: { std::string temp = py::cast(input); @@ -681,6 +681,13 @@ void exportLegacyAPI(py::module * m) { throw py::value_error("Invalid datatype for data in addDataPointBatch"); } } + if (data_type == DATATYPE_DENSE_UINT8_VECTOR) { + DistType dist_type = py::cast(self.attr("distType")); + if (! ((dist_type == DISTTYPE_FLOAT) && (py::isinstance>(data))) ) { + throw py::value_error("Invalid datatype for data in addDataPointBatch"); + } + + } size_t offset = py::len(self); int insertions = py::cast(self.attr("addDataPointBatch")(data, ids));