drm: fix a couple of bugs in the encoder return to userspace
authorDave Airlie <airlied@redhat.com>
Fri, 30 May 2008 03:49:39 +0000 (13:49 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 30 May 2008 03:49:39 +0000 (13:49 +1000)
libdrm/xf86drmMode.c

index 78efe82..0824ec3 100644 (file)
@@ -167,6 +167,7 @@ drmModeResPtr drmModeGetResources(int fd)
        r->count_fbs     = res.count_fbs;
        r->count_crtcs   = res.count_crtcs;
        r->count_outputs = res.count_outputs;
+       r->count_encoders = res.count_encoders;
        /* TODO we realy should test if these allocs fails. */
        r->fbs           = drmAllocCpy(U642VOID(res.fb_id_ptr), res.count_fbs, sizeof(uint32_t));
        r->crtcs         = drmAllocCpy(U642VOID(res.crtc_id_ptr), res.count_crtcs, sizeof(uint32_t));
@@ -358,6 +359,9 @@ drmModeEncoderPtr drmModeGetEncoder(int fd, uint32_t encoder_id)
        if (ioctl(fd, DRM_IOCTL_MODE_GETENCODER, &enc))
                return 0;
 
+       if (!(r = drmMalloc(sizeof(*r))))
+               return 0;
+
        r->encoder_type = enc.encoder_type;
        r->crtcs = enc.crtcs;
        r->clones = enc.clones;