diff --git a/src/web.c b/src/web.c
index 87daa2722878948bc7d43677ad166b78b1fe42a1..b7be7a3cba10881556c5c8a3aee85fb0efd1917e 100644
--- a/src/web.c
+++ b/src/web.c
@@ -523,30 +523,46 @@ void te4_web_load() {
 	spawnname = malloc(strlen(self) + strlen(spawnbname) + 1);
 	strcpy(spawnname, self);
 	strcpy(strrchr(spawnname, '/') + 1, spawnbname);
-	libname = "lib64/libte4-web.so";
-	void *web = SDL_LoadObject(libname);
+	const char *name = "lib64/libte4-web.so";
+	char *lib = malloc(strlen(self) + strlen(name) + 1);
+	strcpy(lib, self);
+	strcpy(strrchr(lib, '/') + 1, name);
+	libname = lib;
+	void *web = SDL_LoadObject(lib);
 #elif defined(TE4_RELPATH32)
 	const char *spawnbname = "cef3spawn32";
 	spawnname = malloc(strlen(self) + strlen(spawnbname) + 1);
 	strcpy(spawnname, self);
 	strcpy(strrchr(spawnname, '/') + 1, spawnbname);
-	libname = "lib/libte4-web.so";
-	void *web = SDL_LoadObject(libname);
+	const char *name = "lib/libte4-web.so";
+	char *lib = malloc(strlen(self) + strlen(name) + 1);
+	strcpy(lib, self);
+	strcpy(strrchr(lib, '/') + 1, name);
+	libname = lib;
+	void *web = SDL_LoadObject(lib);
 #else
 	const char *spawnbname = "cef3spawn";
 	spawnname = malloc(strlen(self) + strlen(spawnbname) + 1);
 	strcpy(spawnname, self);
 	strcpy(strrchr(spawnname, '/') + 1, spawnbname);
-	libname = "libte4-web.so";
-	void *web = SDL_LoadObject(libname);
+	const char *name = "libte4-web.so";
+	char *lib = malloc(strlen(self) + strlen(name) + 1);
+	strcpy(lib, self);
+	strcpy(strrchr(lib, '/') + 1, name);
+	libname = lib;
+	void *web = SDL_LoadObject(lib);
 #endif
 #elif defined(SELFEXE_WINDOWS)
 	const char *spawnbname = "cef3spawn.exe";
 	spawnname = malloc(strlen(self) + strlen(spawnbname) + 1);
 	strcpy(spawnname, self);
 	strcpy(strrchr(spawnname, '\\') + 1, spawnbname);
-	libname = "te4-web.dll";
-	void *web = SDL_LoadObject(libname);
+	const char *name = "te4-web.dll";
+	char *lib = malloc(strlen(self) + strlen(name) + 1);
+	strcpy(lib, self);
+	strcpy(strrchr(lib, '/') + 1, name);
+	libname = lib;
+	void *web = SDL_LoadObject(lib);
 #elif defined(SELFEXE_MACOSX)
 	spawnname = NULL;
 	const char *name = "libte4-web.dylib";