Cleanup: use stack-allocated FileDialog and accept multiple KDMs.
[dcpomatic.git] / src / tools / dcpomatic_batch.cc
index dc092bf8ca1c06976a769cbc128daf22a6e0fcc6..3114768aca497c5f03bd8ebc4845b239ffb6b2b9 100644 (file)
@@ -402,12 +402,14 @@ public:
        void handle (shared_ptr<Socket> socket) override
        {
                try {
-                       int const length = socket->read_uint32 ();
-                       scoped_array<char> buffer(new char[length]);
-                       socket->read (reinterpret_cast<uint8_t*>(buffer.get()), length);
-                       string s (buffer.get());
-                       emit(boost::bind(boost::ref(StartJob), s));
-                       socket->write (reinterpret_cast<uint8_t const *>("OK"), 3);
+                       auto const length = socket->read_uint32();
+                       if (length < 65536) {
+                               scoped_array<char> buffer(new char[length]);
+                               socket->read(reinterpret_cast<uint8_t*>(buffer.get()), length);
+                               string s(buffer.get());
+                               emit(boost::bind(boost::ref(StartJob), s));
+                               socket->write (reinterpret_cast<uint8_t const *>("OK"), 3);
+                       }
                } catch (...) {
 
                }