82 const char* ns = (const char*)pnode->ns->href; |
82 const char* ns = (const char*)pnode->ns->href; |
83 const char* name = (const char*)pnode->name; |
83 const char* name = (const char*)pnode->name; |
84 |
84 |
85 // check for prop duplicates |
85 // check for prop duplicates |
86 CxHashKey k = webdav_property_key((const char*)ns, (const char*)name); |
86 CxHashKey k = webdav_property_key((const char*)ns, (const char*)name); |
87 if(!k.data.bytes) { |
87 if(!k.data) { |
88 *error = proppatch ? PROPPATCH_PARSER_OOM : PROPFIND_PARSER_OOM; |
88 *error = proppatch ? PROPPATCH_PARSER_OOM : PROPFIND_PARSER_OOM; |
89 return 1; |
89 return 1; |
90 } |
90 } |
91 void *c = cxMapGet(propmap, k); |
91 void *c = cxMapGet(propmap, k); |
92 if(!c) { |
92 if(!c) { |
300 *error = 0; |
300 *error = 0; |
301 |
301 |
302 CxAllocator *a = pool_allocator(sn->pool); |
302 CxAllocator *a = pool_allocator(sn->pool); |
303 // map for duplicate checking |
303 // map for duplicate checking |
304 // value type: intptr_t |
304 // value type: intptr_t |
305 CxMap *propmap = cxHashMapCreate(a, 32); |
305 CxMap *propmap = cxHashMapCreate(a, CX_STORE_POINTERS, 32); |
306 if(!propmap) { |
306 if(!propmap) { |
307 *error = PROPPATCH_PARSER_OOM; |
307 *error = PROPPATCH_PARSER_OOM; |
308 xmlFreeDoc(doc); |
308 xmlFreeDoc(doc); |
309 return NULL; |
309 return NULL; |
310 } |
310 } |