diff --git a/cmake/BuildSophia.cmake b/cmake/BuildSophia.cmake
index 65eaccf5dc2c4598b33df838ba5e76e4fcb2c6eb..157bea342cce04c5b63a60ae5eda37d8f77b4313 100644
--- a/cmake/BuildSophia.cmake
+++ b/cmake/BuildSophia.cmake
@@ -1,13 +1,13 @@
 # A macro to build the bundled sophia library
 #
 macro(sophia_build)
-    set(SOPHIA_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party/sophia/sophia)
+    set(SOPHIA_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party/sophia/sophia/sophia)
 	set(SOPHIA_OPTS
 	    CFLAGS="${CMAKE_C_FLAGS}"
 	    LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}")
 	separate_arguments(SOPHIA_OPTS)
     if (${PROJECT_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
-		add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/third_party/sophia/sophia/libsophia.a
+		add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/third_party/sophia/libsophia.a
 			WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/third_party/sophia
 			COMMAND $(MAKE) ${SOPHIA_OPTS} clean
 			COMMAND $(MAKE) ${SOPHIA_OPTS} static
@@ -17,7 +17,7 @@ macro(sophia_build)
         add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/third_party/sophia
             COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/third_party/sophia
         )
-		add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/third_party/sophia/sophia/libsophia.a
+		add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a
 			WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/third_party/sophia
             COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/third_party/sophia ${PROJECT_BINARY_DIR}/third_party/sophia
 			COMMAND $(MAKE) ${SOPHIA_OPTS} clean
@@ -26,8 +26,8 @@ macro(sophia_build)
 		)
     endif()
 	add_custom_target(libsophia ALL
-		DEPENDS ${PROJECT_BINARY_DIR}/third_party/sophia/sophia/libsophia.a
+		DEPENDS ${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a
 	)
-    message(STATUS "Use bundled Sophia: ${SOPHIA_INCLUDE_DIR}")
-    set (sophia_lib "${PROJECT_BINARY_DIR}/third_party/sophia/sophia/libsophia.a")
+    message(STATUS "Use bundled Sophia: ${PROJECT_SOURCE_DIR}/third_party/sophia/")
+    set (sophia_lib "${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a")
 endmacro(sophia_build)
diff --git a/src/box/sophia_index.cc b/src/box/sophia_index.cc
index eaef744a82c9d985c4ca1b88bfb72c4bb1235ac8..e03460c2e3ac69223a04562c9be167b24cc8b322 100644
--- a/src/box/sophia_index.cc
+++ b/src/box/sophia_index.cc
@@ -132,17 +132,15 @@ sophia_configure(struct space *space, struct key_def *key_def)
 	void *env = factory->env;
 	void *c = sp_ctl(env);
 	char pointer[128];
+	char pointer_arg[128];
 	char name[128];
 	snprintf(name, sizeof(name), "%" PRIu32, key_def->space_id);
 	sp_set(c, "db", name);
 	snprintf(name, sizeof(name), "db.%" PRIu32 ".index.cmp",
 	         key_def->space_id);
 	snprintf(pointer, sizeof(pointer), "pointer: %p", (void*)sophia_index_compare);
-	sp_set(c, name, pointer);
-	snprintf(name, sizeof(name), "db.%" PRIu32 ".index.cmp_arg",
-	         key_def->space_id);
-	snprintf(pointer, sizeof(pointer), "pointer: %p", (void*)key_def);
-	sp_set(c, name, pointer);
+	snprintf(pointer_arg, sizeof(pointer_arg), "pointer: %p", (void*)key_def);
+	sp_set(c, name, pointer, pointer_arg);
 	snprintf(name, sizeof(name), "db.%" PRIu32, key_def->space_id);
 	void *db = sp_get(c, name);
 	if (db == NULL)
diff --git a/third_party/sophia b/third_party/sophia
index 13d0195e8c2694e01219d87592a5dd8e6a2e3b41..2eb631891536c2e2df57639991bee86fde7488d9 160000
--- a/third_party/sophia
+++ b/third_party/sophia
@@ -1 +1 @@
-Subproject commit 13d0195e8c2694e01219d87592a5dd8e6a2e3b41
+Subproject commit 2eb631891536c2e2df57639991bee86fde7488d9