[4/5] msxml3/httprequest: Store user defined request headers on transaction beginning

Jacek Caban jacek at codeweavers.com
Mon Sep 27 06:26:22 CDT 2010


  Hi Nikolay,

On 9/25/10 10:16 PM, Nikolay Sivov wrote:
>    Store user defined request headers on transaction beginning

+    buff = CoTaskMemAlloc((size+1)*sizeof(WCHAR));
+    if (!buff) return E_OUTOFMEMORY;
+
+    LIST_FOR_EACH_ENTRY(entry,&This->request->reqheaders, struct reqheader, entry)
+    {
+        LONG header_size = SysStringLen(entry->header) + SysStringLen(entry->value) + 4 /* colon, space, CRLF */;
+
+        /* get large enough buffer */
+        while (freech<  header_size)
+        {
+            WCHAR *buff2;
+
+            freech += size;
+            size *= 2;
+            buff2 = CoTaskMemRealloc(buff, (size+1)*sizeof(WCHAR));


This is very inefficient. You can compute header size before doing 
allocation, so that no reallocation is needed. And even when doing 
reallocation, the inner loop may be easily avoided.


Jacek




More information about the wine-devel mailing list