Merge remote-tracking branch 'vignatti/for-keith'

This commit is contained in:
Keith Packard 2011-04-04 11:57:39 -07:00
commit c9d89cec14
23 changed files with 92 additions and 89 deletions

View File

@ -374,10 +374,7 @@ ProcXTestFakeInput(ClientPtr client)
if (!dev->valuator)
return BadDevice;
/* broken lib, XI events have root uninitialized */
if (extension || ev->u.keyButtonPointer.root == None)
root = GetCurrentRootWindow(dev);
else
if (!(extension || ev->u.keyButtonPointer.root == None))
{
rc = dixLookupWindow(&root, ev->u.keyButtonPointer.root,
client, DixGetAttrAccess);

View File

@ -1607,14 +1607,18 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx)
if (!others)
return BadAlloc;
if (!pWin->optional->inputMasks && !MakeInputMasks(pWin))
return BadAlloc;
goto bail;
others->mask[mskidx] = mask;
others->resource = FakeClientID(client->index);
others->next = pWin->optional->inputMasks->inputClients;
pWin->optional->inputMasks->inputClients = others;
if (!AddResource(others->resource, RT_INPUTCLIENT, (pointer) pWin))
return BadAlloc;
goto bail;
return Success;
bail:
free(others);
return BadAlloc;
}
static Bool

View File

@ -115,7 +115,7 @@ ProcXGetDeviceDontPropagateList(ClientPtr client)
if ((others = wOtherInputMasks(pWin)) != 0) {
for (i = 0; i < EMASKSIZE; i++)
tbuf = ClassFromMask(NULL, others->dontPropagateMask[i], i,
ClassFromMask(NULL, others->dontPropagateMask[i], i,
&count, COUNT);
if (count) {
rep.count = count;

View File

@ -118,13 +118,13 @@ ProcXGetSelectedExtensionEvents(ClientPtr client)
if ((pOthers = wOtherInputMasks(pWin)) != 0) {
for (others = pOthers->inputClients; others; others = others->next)
for (i = 0; i < EMASKSIZE; i++)
tclient = ClassFromMask(NULL, others->mask[i], i,
ClassFromMask(NULL, others->mask[i], i,
&rep.all_clients_count, COUNT);
for (others = pOthers->inputClients; others; others = others->next)
if (SameClient(others, client)) {
for (i = 0; i < EMASKSIZE; i++)
tclient = ClassFromMask(NULL, others->mask[i], i,
ClassFromMask(NULL, others->mask[i], i,
&rep.this_client_count, COUNT);
break;
}
@ -152,8 +152,8 @@ ProcXGetSelectedExtensionEvents(ClientPtr client)
if (total_length) {
client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
WriteSwappedDataToClient(client, total_length, buf);
free(buf);
}
free(buf);
return Success;
}

View File

@ -107,8 +107,10 @@ ProcXIQueryDevice(ClientPtr client)
}
info = calloc(1, len);
if (!info)
if (!info) {
free(skip);
return BadAlloc;
}
memset(&rep, 0, sizeof(xXIQueryDeviceReply));
rep.repType = X_Reply;

View File

@ -1879,6 +1879,7 @@ AllocPseudo (int client, ColormapPtr pmap, int c, int r, Bool contig,
{
for (p = ppixTemp; p < ppixTemp + npix; p++)
pmap->red[*p].refcnt = 0;
free(ppixTemp);
return BadAlloc;
}
pmap->clientPixelsRed[client] = ppix;
@ -2104,6 +2105,7 @@ AllocShared (ColormapPtr pmap, Pixel *ppix, int c, int r, int g, int b,
{
for (z++ ; z < npixShared; z++)
free(ppshared[z]);
free(psharedList);
return FALSE;
}
}

View File

@ -66,16 +66,10 @@ Equipment Corporation.
#include "dixfont.h"
#include "xace.h"
#ifdef DEBUG
#include <stdio.h>
#endif
#ifdef XF86BIGFONT
#include "xf86bigfontsrv.h"
#endif
#define QUERYCHARINFO(pci, pr) *(pr) = (pci)->metrics
extern pointer fosNaturalParams;
extern FontPtr defaultFont;
@ -391,14 +385,6 @@ OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontna
int i;
FontPtr cached = (FontPtr)0;
#ifdef FONTDEBUG
char *f;
f = malloc(lenfname + 1);
memmove(f, pfontname, lenfname);
f[lenfname] = '\0';
ErrorF("[dix] OpenFont: fontname is \"%s\"\n", f);
free(f);
#endif
if (!lenfname || lenfname > XLFDMAXFONTNAMELEN)
return BadName;
if (patternCache)
@ -1829,8 +1815,10 @@ SetDefaultFontPath(char *path)
/* get enough for string, plus values -- use up commas */
len = strlen(temp_path) + 1;
nump = cp = newpath = malloc(len);
if (!newpath)
if (!newpath) {
free(temp_path);
return BadAlloc;
}
pp = (unsigned char *) temp_path;
cp++;
while (*pp) {

View File

@ -353,9 +353,8 @@ ProcListExtensions(ClientPtr client)
}
WriteReplyToClient(client, sizeof(xListExtensionsReply), &reply);
if (reply.length)
{
WriteToClient(client, total_length, buffer);
free(buffer);
}
free(buffer);
return Success;
}

View File

@ -384,12 +384,16 @@ fbOverlayFinishScreenInit(ScreenPtr pScreen,
if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &depth1,
&defaultVisual, ((unsigned long)1<<(bpp1-1)) |
((unsigned long)1<<(bpp2-1)), 8))
((unsigned long)1<<(bpp2-1)), 8)) {
free(pScrPriv);
return FALSE;
}
if (! miScreenInit(pScreen, 0, xsize, ysize, dpix, dpiy, 0,
depth1, ndepths, depths,
defaultVisual, nvisuals, visuals))
defaultVisual, nvisuals, visuals)) {
free(pScrPriv);
return FALSE;
}
/* MI thinks there's no frame buffer */
#ifdef MITSHM
ShmRegisterFbFuncs(pScreen);

View File

@ -221,11 +221,7 @@ fbFinishScreenInit(ScreenPtr pScreen,
rootdepth = 0;
if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
&defaultVisual,((unsigned long)1<<(imagebpp-1)), 8))
{
free(visuals);
free(depths);
return FALSE;
}
if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
rootdepth, ndepths, depths,
defaultVisual, nvisuals, visuals))

View File

@ -309,7 +309,7 @@ xf86ModulelistFromConfig(pointer **optlist)
}
if (found == FALSE) {
XF86LoadPtr ptr = (XF86LoadPtr)xf86configptr->conf_modules;
ptr = xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt);
xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt);
xf86Msg(X_INFO, "\"%s\" will be loaded by default.\n", ModuleDefaults[i].name);
}
}
@ -318,7 +318,7 @@ xf86ModulelistFromConfig(pointer **optlist)
for (i=0 ; ModuleDefaults[i].name != NULL ; i++) {
if (ModuleDefaults[i].toLoad == TRUE) {
XF86LoadPtr ptr = (XF86LoadPtr)xf86configptr->conf_modules;
ptr = xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt);
xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt);
}
}
}
@ -1459,8 +1459,9 @@ configInputDevices(XF86ConfLayoutPtr layout, serverLayoutPtr servlayoutp)
while (irp) {
indp[count] = xf86AllocateInput();
if (!configInput(indp[count], irp->iref_inputdev, X_CONFIG)) {
while(count--)
do {
free(indp[count]);
} while(count--);
free(indp);
return FALSE;
}
@ -1485,7 +1486,7 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
{
XF86ConfAdjacencyPtr adjp;
XF86ConfInactivePtr idp;
int count = 0;
int saved_count, count = 0;
int scrnum;
XF86ConfLayoutPtr l;
MessageType from;
@ -1553,6 +1554,9 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
scrnum = adjp->adj_scrnum;
if (!configScreen(slp[count].screen, adjp->adj_screen, scrnum,
X_CONFIG)) {
do {
free(slp[count].screen);
} while(count--);
free(slp);
return FALSE;
}
@ -1641,6 +1645,10 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
}
}
if (!count)
saved_count = 1;
else
saved_count = count;
/*
* Count the number of inactive devices.
*/
@ -1657,16 +1665,14 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
idp = conf_layout->lay_inactive_lst;
count = 0;
while (idp) {
if (!configDevice(&gdp[count], idp->inactive_device, FALSE)) {
free(gdp);
return FALSE;
}
if (!configDevice(&gdp[count], idp->inactive_device, FALSE))
goto bail;
count++;
idp = (XF86ConfInactivePtr)idp->list.next;
}
if (!configInputDevices(conf_layout, servlayoutp))
return FALSE;
goto bail;
servlayoutp->id = conf_layout->lay_identifier;
servlayoutp->screens = slp;
@ -1675,6 +1681,14 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
from = X_DEFAULT;
return TRUE;
bail:
do {
free(slp[saved_count].screen);
} while(saved_count--);
free(slp);
free(gdp);
return FALSE;
}
/*

View File

@ -1831,6 +1831,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
free(pEnt);
return pScrn;
}

View File

@ -1414,8 +1414,10 @@ xf86LoadModules(char **list, pointer *optlist)
name = xf86NormalizeName(list[i]);
/* Skip empty names */
if (name == NULL || *name == '\0')
if (name == NULL || *name == '\0') {
free(name);
continue;
}
/* Replace obsolete keyboard driver with kbd */
if (!xf86NameCmp(name, "keyboard")) {

View File

@ -221,11 +221,16 @@ DRI2AddDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id,
if (ref == NULL)
return BadAlloc;
if (!AddResource(dri2_id, dri2DrawableRes, pPriv))
if (!AddResource(dri2_id, dri2DrawableRes, pPriv)) {
free(ref);
return BadAlloc;
}
if (!DRI2LookupDrawableRef(pPriv, id))
if (!AddResource(id, dri2DrawableRes, pPriv))
if (!AddResource(id, dri2DrawableRes, pPriv)) {
FreeResourceByType(dri2_id, dri2DrawableRes, TRUE);
free(ref);
return BadAlloc;
}
ref->id = id;
ref->dri2_id = dri2_id;

View File

@ -564,6 +564,8 @@ miInitVisuals(VisualPtr *visualp, DepthPtr *depthp, int *nvisualp,
{
vid = malloc(nvtype * sizeof (VisualID));
if (!vid) {
free(depth);
free(visual);
free(preferredCVCs);
return FALSE;
}

View File

@ -397,7 +397,6 @@ Bool
miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
int x, int y, unsigned long source, unsigned long mask)
{
miDCScreenPtr pScreenPriv;
miDCCursorPtr pPriv;
miDCBufferPtr pBuffer;
WindowPtr pWin;
@ -410,8 +409,7 @@ miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
if (!pPriv)
return FALSE;
}
pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
miDCScreenKey);
pWin = pScreen->root;
pBuffer = miGetDCDevice(pDev, pScreen);
@ -444,14 +442,11 @@ Bool
miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h)
{
miDCScreenPtr pScreenPriv;
miDCBufferPtr pBuffer;
PixmapPtr pSave;
WindowPtr pWin;
GCPtr pGC;
pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
miDCScreenKey);
pBuffer = miGetDCDevice(pDev, pScreen);
pSave = pBuffer->pSave;
@ -478,14 +473,11 @@ Bool
miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h)
{
miDCScreenPtr pScreenPriv;
miDCBufferPtr pBuffer;
PixmapPtr pSave;
WindowPtr pWin;
GCPtr pGC;
pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
miDCScreenKey);
pBuffer = miGetDCDevice(pDev, pScreen);
pSave = pBuffer->pSave;

View File

@ -602,7 +602,6 @@ miPointerSetPosition(DeviceIntPtr pDev, int mode, int *x, int *y)
pScreen = newScreen;
(*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen,
FALSE);
pScreenPriv = GetScreenPrivate (pScreen);
/* Smash the confine to the new screen */
pPointer->limits.x2 = pScreen->width;
pPointer->limits.y2 = pScreen->height;

View File

@ -458,6 +458,8 @@ void miFillUniqueSpanGroup(DrawablePtr pDraw, GCPtr pGC, SpanGroup *spanGroup)
}
free(yspans);
free(ysizes);
free(newpoints);
free(newwidths);
miDisposeSpanGroup (spanGroup);
return;
}

View File

@ -157,9 +157,11 @@ miZeroLine(
list_len = (height >= width) ? height : width;
pspanInit = malloc(list_len * sizeof(DDXPointRec));
pwidthInit = malloc(list_len * sizeof(int));
if (!pspanInit || !pwidthInit)
if (!pspanInit || !pwidthInit) {
free(pspanInit);
free(pwidthInit);
return;
}
Nspans = 0;
new_span = TRUE;
spans = pspanInit - 1;

View File

@ -1256,10 +1256,7 @@ System(char *command)
perror("signal");
return -1;
}
#ifdef DEBUG
ErrorF("System: `%s'\n", command);
#endif
DebugF("System: `%s'\n", command);
switch (pid = fork()) {
case -1: /* error */
@ -1318,6 +1315,9 @@ Popen(char *command, char *type)
/* Ignore the smart scheduler while this is going on */
old_alarm = OsSignal(SIGALRM, SIG_IGN);
if (old_alarm == SIG_ERR) {
close(pdes[0]);
close(pdes[1]);
free(cur);
perror("signal");
return NULL;
}
@ -1371,9 +1371,7 @@ Popen(char *command, char *type)
cur->next = pidlist;
pidlist = cur;
#ifdef DEBUG
ErrorF("Popen: `%s', fp = %p\n", command, iop);
#endif
DebugF("Popen: `%s', fp = %p\n", command, iop);
return iop;
}
@ -1448,9 +1446,7 @@ Fopen(char *file, char *type)
cur->next = pidlist;
pidlist = cur;
#ifdef DEBUG
ErrorF("Fopen(%s), fp = %p\n", file, iop);
#endif
DebugF("Fopen(%s), fp = %p\n", file, iop);
return iop;
#else
@ -1479,10 +1475,7 @@ Pclose(pointer iop)
int pstat;
int pid;
#ifdef DEBUG
ErrorF("Pclose: fp = %p\n", iop);
#endif
DebugF("Pclose: fp = %p\n", iop);
fclose(iop);
for (last = NULL, cur = pidlist; cur; last = cur, cur = cur->next)

View File

@ -1372,8 +1372,10 @@ ProcRenderCompositeGlyphs (ClientPtr client)
else
{
listsBase = (GlyphListPtr) malloc(nlist * sizeof (GlyphListRec));
if (!listsBase)
return BadAlloc;
if (!listsBase) {
rc = BadAlloc;
goto bail;
}
}
buffer = (CARD8 *) (stuff + 1);
glyphs = glyphsBase;
@ -1392,13 +1394,7 @@ ProcRenderCompositeGlyphs (ClientPtr client)
GlyphSetType, client,
DixUseAccess);
if (rc != Success)
{
if (glyphsBase != glyphsLocal)
free(glyphsBase);
if (listsBase != listsLocal)
free(listsBase);
return rc;
}
goto bail;
}
buffer += 4;
}
@ -1436,8 +1432,10 @@ ProcRenderCompositeGlyphs (ClientPtr client)
lists++;
}
}
if (buffer > end)
return BadLength;
if (buffer > end) {
rc = BadLength;
goto bail;
}
CompositeGlyphs (stuff->op,
pSrc,
@ -1448,13 +1446,14 @@ ProcRenderCompositeGlyphs (ClientPtr client)
nlist,
listsBase,
glyphsBase);
rc = Success;
bail:
if (glyphsBase != glyphsLocal)
free(glyphsBase);
if (listsBase != listsLocal)
free(listsBase);
return Success;
return rc;
}
static int

View File

@ -757,13 +757,11 @@ ProcXFixesSetPictureClipRegion (ClientPtr client)
PicturePtr pPicture;
RegionPtr pRegion;
ScreenPtr pScreen;
PictureScreenPtr ps;
REQUEST(xXFixesSetPictureClipRegionReq);
REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
VERIFY_PICTURE(pPicture, stuff->picture, client, DixSetAttrAccess);
pScreen = pPicture->pDrawable->pScreen;
ps = GetPictureScreen (pScreen);
VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, DixReadAccess);
return SetPictureClipRegion (pPicture, stuff->xOrigin, stuff->yOrigin,

View File

@ -222,8 +222,10 @@ char tmpname[PATH_MAX];
list->nFound[what]= 0;
free(buf);
buf = malloc(PATH_MAX * sizeof(char));
if (!buf)
if (!buf) {
fclose(in);
return BadAlloc;
}
while ((status==Success)&&((tmp=fgets(buf,PATH_MAX,in))!=NULL)) {
unsigned flags;
register unsigned int i;