]> git.lyx.org Git - lyx.git/blobdiff - src/Server.cpp
Account for old versions of Pygments
[lyx.git] / src / Server.cpp
index b7fa35ee13fbeee11d1a8676a73f6f31fada827c..98e1d6632c9bd688c2fc7e7c94a5d2d76995ed31 100644 (file)
@@ -55,8 +55,9 @@
 #include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/os.h"
+#include "support/signals.h"
 
-#include "support/bind.h"
+#include <iostream>
 
 #ifdef _WIN32
 #include <io.h>
@@ -136,7 +137,7 @@ DWORD WINAPI pipeServerWrapper(void * arg)
 
 
 LyXComm::LyXComm(string const & pip, Server * cli, ClientCallbackfct ccb)
-       : pipename_(pip), client_(cli), clientcb_(ccb), stopserver_(0)
+       : stopserver_(0), pipename_(pip), client_(cli), clientcb_(ccb)
 {
        for (int i = 0; i < MAX_PIPES; ++i) {
                event_[i] = 0;
@@ -209,7 +210,7 @@ bool LyXComm::pipeServer()
 
                // Determine which pipe instance completed the operation.
                i = wait - WAIT_OBJECT_0;
-               LASSERT(i >= 0 && i <= MAX_PIPES, /**/);
+               LASSERT(i <= MAX_PIPES, /**/);
 
                // Check whether we were waked up for stopping the pipe server.
                if (i == MAX_PIPES)
@@ -857,8 +858,12 @@ int LyXComm::startPipe(string const & file, bool write)
        }
 
        if (!write) {
-               theApp()->registerSocketCallback(fd,
-                       bind(&LyXComm::read_ready, this));
+               // Make sure not to call read_ready after destruction.
+               weak_ptr<void> tracker = tracker_.p();
+               theApp()->registerSocketCallback(fd, [=](){
+                               if (!tracker.expired())
+                                       read_ready();
+                       });
        }
 
        return fd;
@@ -1173,7 +1178,7 @@ void Server::callback(string const & msg)
                        // connect to the lyxfunc in the single GuiView we
                        // support currently. (Lgb)
 
-                       FuncRequest fr(lyxaction.lookupFunc(cmd), arg);
+                       FuncRequest fr(lyxaction.lookupFunc(cmd), from_ascii(arg));
                        fr.setOrigin(FuncRequest::LYXSERVER);
                        DispatchResult dr;
                        theApp()->dispatch(fr, dr);