-Wmemset-elt-size warning in LibWebRTCSocket constructor
authoryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 May 2018 16:08:09 +0000 (16:08 +0000)
committeryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 May 2018 16:08:09 +0000 (16:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=185555
<rdar://problem/40217250>

Reviewed by Darin Adler.

GetOption implementation was broken in that it was not initializing properly its array of options.
This patch fixes it by using an array of optional<int> which are initialized by default.
When no value is set, we return the error code -1.
In theory, we should go to NetworkProcess to get the actual value.
Since GetOption is not used in practice, we just do this best effort implementation of storing previously set values.

* WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
(WebKit::LibWebRTCSocket::LibWebRTCSocket):
(WebKit::LibWebRTCSocket::GetOption):
* WebProcess/Network/webrtc/LibWebRTCSocket.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231956 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.cpp
Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.h

index 7de1439..d63a4ed 100644 (file)
@@ -1,3 +1,22 @@
+2018-05-18  Youenn Fablet  <youenn@apple.com>
+
+        -Wmemset-elt-size warning in LibWebRTCSocket constructor
+        https://bugs.webkit.org/show_bug.cgi?id=185555
+        <rdar://problem/40217250>
+
+        Reviewed by Darin Adler.
+
+        GetOption implementation was broken in that it was not initializing properly its array of options.
+        This patch fixes it by using an array of optional<int> which are initialized by default.
+        When no value is set, we return the error code -1.
+        In theory, we should go to NetworkProcess to get the actual value.
+        Since GetOption is not used in practice, we just do this best effort implementation of storing previously set values.
+
+        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
+        (WebKit::LibWebRTCSocket::LibWebRTCSocket):
+        (WebKit::LibWebRTCSocket::GetOption):
+        * WebProcess/Network/webrtc/LibWebRTCSocket.h:
+
 2018-05-18  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Turn Web Animations with CSS integration on for test runners
index c301453..7d5d077 100644 (file)
@@ -54,7 +54,6 @@ LibWebRTCSocket::LibWebRTCSocket(LibWebRTCSocketFactory& factory, uint64_t ident
     , m_localAddress(localAddress)
     , m_remoteAddress(remoteAddress)
 {
-    memset(&m_options, 1, MAX_SOCKET_OPTION);
 }
 
 LibWebRTCSocket::~LibWebRTCSocket()
@@ -157,10 +156,11 @@ int LibWebRTCSocket::Close()
 int LibWebRTCSocket::GetOption(rtc::Socket::Option option, int* value)
 {
     ASSERT(option < MAX_SOCKET_OPTION);
-    int storedValue = m_options[option];
-    if (storedValue != -1)
-        *value = m_options[option];
-    return 0;
+    if (auto storedValue = m_options[option]) {
+        *value = *storedValue;
+        return 0;
+    }
+    return -1;
 }
 
 int LibWebRTCSocket::SetOption(rtc::Socket::Option option, int value)
index 107ef94..81c08b8 100644 (file)
@@ -93,7 +93,7 @@ private:
     State m_state { STATE_BINDING };
 
     static const unsigned MAX_SOCKET_OPTION { rtc::Socket::OPT_RTP_SENDTIME_EXTN_ID + 1 };
-    int m_options[MAX_SOCKET_OPTION];
+    std::optional<int> m_options[MAX_SOCKET_OPTION];
 
     Deque<size_t> m_beingSentPacketSizes;
     size_t m_availableSendingBytes { 65536 };