]> git.saurik.com Git - cycript.git/commitdiff
Make CYHandleClient only take a file descriptor.
authorJay Freeman (saurik) <saurik@saurik.com>
Tue, 10 Sep 2013 18:02:40 +0000 (11:02 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Tue, 10 Sep 2013 18:04:42 +0000 (11:04 -0700)
Handler.mm
cycript.hpp

index d49274a23b74364192f56fd567bcc422829766f0..d15eb6a9c3de25b5758f89b4cb12136c6d14b11b 100644 (file)
@@ -149,8 +149,10 @@ static void *OnClient(void *data) {
     return NULL;
 }
 
-extern "C" void CYHandleClient(CYPool &pool, int socket) {
-    CYClient *client(new(pool) CYClient(socket));
+extern "C" void CYHandleClient(int socket) {
+    // XXX: this leaks memory... really?
+    CYPool *pool(new CYPool());
+    CYClient *client(new(*pool) CYClient(socket));
     _assert(pthread_create(&client->thread_, NULL, &OnClient, client) == 0);
 }
 
@@ -164,9 +166,7 @@ extern "C" void CYHandleServer(pid_t pid) {
         sprintf(address.sun_path, "/tmp/.s.cy.%u", pid);
 
         _syscall(connect(socket, reinterpret_cast<sockaddr *>(&address), SUN_LEN(&address)));
-
-        // XXX: this leaks memory... really?
-        CYHandleClient(*new CYPool(), socket);
+        CYHandleClient(socket);
     } catch (const CYException &error) {
         CYPool pool;
         fprintf(stderr, "%s\n", error.PoolCString(pool));
index 52accefad418bcb95e1e9f14608a45077d0b1ffb..5498b594f9001be4f2f963b854939786bb864c24 100644 (file)
@@ -37,7 +37,7 @@ void CYStringify(std::ostringstream &str, const char *data, size_t size);
 double CYCastDouble(const char *value, size_t size);
 double CYCastDouble(const char *value);
 
-extern "C" void CYHandleClient(CYPool &pool, int socket);
+extern "C" void CYHandleClient(int socket);
 
 template <typename Type_>
 bool CYRecvAll(int socket, Type_ *data, size_t size) {