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

Reply via email to