Hi Thomas,

On 9/3/10 1:19 AM, Thomas Mullaly wrote:
---
 dlls/urlmon/tests/uri.c |   22 ++++++++++++-
 dlls/urlmon/uri.c       |   80 ++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 93 insertions(+), 9 deletions(-)

+static HRESULT setup_builder_properties(UriBuilder *builder, const Uri* uri) {
+    if(uri->fragment_start > -1) {
+        builder->fragment = heap_alloc((uri->fragment_len+1)*sizeof(WCHAR));
+        if(!builder->fragment)
+            return E_OUTOFMEMORY;
+
+        memcpy(builder->fragment, uri->canon_uri+uri->fragment_start, uri->fragment_len*sizeof(WCHAR));
+        builder->fragment[uri->fragment_len] = '\0';
+        builder->fragment_len = uri->fragment_len;
+    }
+
+    return S_OK;
+}

I don't think it's a good idea. It should be possible to avoid fetching all URI properties here. You can do it, eg. on demand, when you get a call to GetFragment and the fragment is not everwriten by SetFragment call. Thinking about it, the way these APIs work suggests that Uri object should store null-terminated properties that we could return here, but it may be too far conclusion.

Jacek