CacheQueryOptions::isolatedCopy() copies the cache name twice
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 29 Aug 2017 18:08:54 +0000 (18:08 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 29 Aug 2017 18:08:54 +0000 (18:08 +0000)
commitcfb6196a2ba7f4648aa8b76017e57f6a292f8c4b
tree52538f624c1754f27f62ed202c66582005a7d26c
parent4507ddc4847f6381ab5e022e03779717f1a728bb
CacheQueryOptions::isolatedCopy() copies the cache name twice
https://bugs.webkit.org/show_bug.cgi?id=175974

Reviewed by Youenn Fablet.

Currently CacheQueryOptions has a user-defined constructor that calls String.isolatedCopy()
on the passed cache name. CacheQueryOptions::isolatedCopy() also calls String.isolatedCopy()
on the cache name before passing the result to the user-defined constructor; => we malloc
and copy the cache name twice. Ideally we would remove the user-defined constructors and
have callers use aggregate initializer syntax to instantiate a CacheQueryOptions. Unfortunately
we cannot do this until we upgrade from Visual Studio 2015 to Visual Studio 2017 as the former
does not support non-static data member initializers (NSDMI) for aggregates and CacheQueryOptions
has some. Therefore we modify the user-defined, non-default, constructor to take a String&&
and conditionally compile the the constructors when building with compilers that do not
support NSDMI for aggregates.

* Modules/cache/CacheQueryOptions.h:
(WebCore::CacheQueryOptions::CacheQueryOptions):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@221306 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/Modules/cache/CacheQueryOptions.h