st/va: Check NULL pointer
[mesa.git] / src / gallium / state_trackers / nine / nine_pdata.h
1
2 #ifndef _NINE_PDATA_H_
3 #define _NINE_PDATA_H_
4
5 struct pheader
6 {
7 boolean unknown;
8 GUID guid;
9 DWORD size;
10 char data[1];
11 };
12
13 static int
14 ht_guid_compare( void *a,
15 void *b )
16 {
17 return GUID_equal(a, b) ? 0 : 1;
18 }
19
20 static unsigned
21 ht_guid_hash( void *key )
22 {
23 unsigned i, hash = 0;
24 const unsigned char *str = key;
25
26 for (i = 0; i < sizeof(GUID); i++) {
27 hash = (unsigned)(str[i]) + (hash << 6) + (hash << 16) - hash;
28 }
29
30 return hash;
31 }
32
33 static enum pipe_error
34 ht_guid_delete( void *key,
35 void *value,
36 void *data )
37 {
38 struct pheader *header = value;
39
40 if (header->unknown) { IUnknown_Release(*(IUnknown **)header->data); }
41 FREE(header);
42
43 return PIPE_OK;
44 }
45
46 #endif /* _NINE_PDATA_H_ */