diff options
-rw-r--r-- | src/XrrProvider.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/XrrProvider.c b/src/XrrProvider.c index 309e321..014ddd9 100644 --- a/src/XrrProvider.c +++ b/src/XrrProvider.c @@ -156,7 +156,16 @@ XRRGetProviderInfo(Display *dpy, XRRScreenResources *resources, RRProvider provi _XRead32(dpy, xpi->outputs, rep.nOutputs << 2); _XRead32(dpy, xpi->associated_providers, rep.nAssociatedProviders << 2); - _XRead32(dpy, xpi->associated_capability, rep.nAssociatedProviders << 2); + + /* + * _XRead32 reads a series of 32-bit values from the protocol and writes + * them out as a series of "long int" values, but associated_capability + * is defined as unsigned int *, so that won't work for this array. + * Instead we assume for now that "unsigned int" is also 32-bits, so + * the values can be read without any conversion. + */ + _XRead(dpy, (char *) xpi->associated_capability, + rep.nAssociatedProviders << 2); _XReadPad(dpy, xpi->name, rep.nameLength); xpi->name[rep.nameLength] = '\0'; |