roberts added inline comments.
INLINE COMMENTS
> plasmawindowmanagement.cpp:489
> + n = QT_READ(fd, buf, sizeof buf);
> + if (n == -1 && (errno == EAGAIN) && ++retryCount < 1000) {
> + usleep(1000);
EAGAIN comes from reads of O_NONBLOCK fd's, but this seems to be a blocking
pipe (no calls to fcntl() or pipe2()).
As such the read call could block the thread for significant or unbounded time
- depending on whether QT_READ swallows EINTR - if the other side of the pipe
failed to close the fd.
> plasmawindowmanagement.cpp:516
> + if (readData(pipeFd, content) != 0) {
> + return QIcon::fromTheme(QStringLiteral("wayland"));
> + }
pipeFd could leak here.
> plasmawindowmanagement_interface.cpp:406
> + QDataStream ds(&file);
> + ds << p->m_icon;
> + file.close();
Is there anything protecting this from being unsynchronised parallel access to
m_icon (and p)?
Simplest solution might be passing the icon by value into the lambda.
REPOSITORY
rKWAYLAND KWayland
REVISION DETAIL
https://phabricator.kde.org/D3049
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: graesslin, #plasma_on_wayland, hein
Cc: roberts, plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts,
sebas