DMD 2.073.0-rc1 compile fixes.

This commit is contained in:
Sönke Ludwig 2017-01-22 03:26:47 +01:00
parent 922c9e8e72
commit 55ea6c192f
2 changed files with 11 additions and 11 deletions

View file

@ -1172,7 +1172,7 @@ final class PosixEventDriverEvents(Loop : PosixEventLoop, Sockets : EventDriverS
final override void trigger(EventID event, bool notify_all = true) final override void trigger(EventID event, bool notify_all = true)
{ {
auto slot = &getSlot(event); auto slot = getSlot(event);
if (notify_all) { if (notify_all) {
//log("emitting only for this thread (%s waiters)", m_fds[event].waiters.length); //log("emitting only for this thread (%s waiters)", m_fds[event].waiters.length);
foreach (w; slot.waiters.consume) { foreach (w; slot.waiters.consume) {
@ -1194,7 +1194,7 @@ final class PosixEventDriverEvents(Loop : PosixEventLoop, Sockets : EventDriverS
//log("emitting for all threads"); //log("emitting for all threads");
if (notify_all) atomicStore(thisus.getSlot(event).triggerAll, true); if (notify_all) atomicStore(thisus.getSlot(event).triggerAll, true);
version (Windows) version (Windows)
(cast(Sockets)m_sockets).send(cast(DatagramSocketFD)event, cast(ubyte[])m_buf, IOMode.once, null, &onSocketDataSent); thisus.m_sockets.send(cast(DatagramSocketFD)event, thisus.m_buf, IOMode.once, null, &thisus.onSocketDataSent);
else else
() @trusted { .write(event, &one, one.sizeof); } (); () @trusted { .write(event, &one, one.sizeof); } ();
} }
@ -1269,14 +1269,14 @@ final class PosixEventDriverEvents(Loop : PosixEventLoop, Sockets : EventDriverS
return true; return true;
} }
private ref EventSlot getSlot(EventID id) private EventSlot* getSlot(EventID id)
{ {
version (Windows) { version (Windows) {
assert(cast(DatagramSocketFD)id in m_events, "Invalid event ID."); assert(cast(DatagramSocketFD)id in m_events, "Invalid event ID.");
return m_events[cast(DatagramSocketFD)id]; return &m_events[cast(DatagramSocketFD)id];
} else { } else {
assert(id < m_loop.m_fds.length, "Invalid event ID."); assert(id < m_loop.m_fds.length, "Invalid event ID.");
return m_loop.m_fds[id].event(); return &m_loop.m_fds[id].event();
} }
} }

View file

@ -217,14 +217,14 @@ final class WinAPIEventDriverCore : EventDriverCore {
if (callback) m_eventCallbacks[event] = callback; if (callback) m_eventCallbacks[event] = callback;
} }
private ref SlotType setupSlot(SlotType)(HANDLE h) private SlotType* setupSlot(SlotType)(HANDLE h)
{ {
assert(h !in m_handles, "Handle already in use."); assert(h !in m_handles, "Handle already in use.");
HandleSlot s; HandleSlot s;
s.refCount = 1; s.refCount = 1;
s.specific = SlotType.init; s.specific = SlotType.init;
m_handles[h] = s; m_handles[h] = s;
return m_handles[h].specific.get!SlotType; return () @trusted { return &m_handles[h].specific.get!SlotType(); } ();
} }
private void freeSlot(HANDLE h) private void freeSlot(HANDLE h)
@ -404,7 +404,7 @@ final class WinAPIEventDriverFiles : EventDriverFiles {
if (!() @trusted { return GetHandleInformation(handle, &f); } ()) if (!() @trusted { return GetHandleInformation(handle, &f); } ())
return FileFD.init; return FileFD.init;
auto s = &m_core.setupSlot!FileSlot(handle); auto s = m_core.setupSlot!FileSlot(handle);
s.read.handle = s.write.handle = handle; s.read.handle = s.write.handle = handle;
return FileFD(system_handle); return FileFD(system_handle);
@ -413,7 +413,7 @@ final class WinAPIEventDriverFiles : EventDriverFiles {
override void close(FileFD file) override void close(FileFD file)
{ {
auto h = idToHandle(file); auto h = idToHandle(file);
auto slot = &m_core.m_handles[h].file(); auto slot = () @trusted { return &m_core.m_handles[h].file(); } ();
if (slot.read.handle != INVALID_HANDLE_VALUE) { if (slot.read.handle != INVALID_HANDLE_VALUE) {
CloseHandle(h); CloseHandle(h);
slot.read.handle = slot.write.handle = INVALID_HANDLE_VALUE; slot.read.handle = slot.write.handle = INVALID_HANDLE_VALUE;
@ -774,7 +774,7 @@ final class WinAPIEventDriverWatchers : EventDriverWatchers {
auto id = WatcherID(cast(int)handle); auto id = WatcherID(cast(int)handle);
auto slot = &m_core.setupSlot!WatcherSlot(handle); auto slot = m_core.setupSlot!WatcherSlot(handle);
slot.directory = path; slot.directory = path;
slot.recursive = recursive; slot.recursive = recursive;
slot.callback = callback; slot.callback = callback;
@ -816,7 +816,7 @@ final class WinAPIEventDriverWatchers : EventDriverWatchers {
auto handle = overlapped.hEvent; // *file* handle auto handle = overlapped.hEvent; // *file* handle
auto id = WatcherID(cast(int)handle); auto id = WatcherID(cast(int)handle);
auto slot = &WinAPIEventDriver.threadInstance.core.m_handles[handle].watcher(); auto slot = () @trusted { return &WinAPIEventDriver.threadInstance.core.m_handles[handle].watcher(); } ();
if (dwError != 0) { if (dwError != 0) {
// FIXME: this must be propagated to the caller // FIXME: this must be propagated to the caller