[PATCH] xcms/LRGB: Add a label for freeing property_return.
Alan Coopersmith
alan.coopersmith at oracle.com
Tue Feb 1 16:13:13 PST 2011
On 02/ 1/11 01:07 AM, Ander Conselvan de Oliveira wrote:
> The rest of the code uses goto's to free memory allocated later
> and prevent memory leaks, but there were several paths were
> property_return was free'd just before a goto.
>
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira at nokia.com>
> Signed-off-by: Erkki Seppälä <erkki.seppala at vincit.fi>
> ---
> src/xcms/LRGB.c | 24 ++++++++++--------------
> 1 files changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/src/xcms/LRGB.c b/src/xcms/LRGB.c
> index c1606be..2dca82e 100644
> --- a/src/xcms/LRGB.c
> +++ b/src/xcms/LRGB.c
> @@ -594,8 +594,7 @@ LINEAR_RGB_InitSCCData(
> * intensity2
> */
> if (nitems < 9) {
> - Xfree ((char *)property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
> count = 3;
> break;
> @@ -611,8 +610,7 @@ LINEAR_RGB_InitSCCData(
> * intensity2
> */
> if (nitems < 7) {
> - Xfree ((char *)property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
> count = 1;
> break;
> @@ -627,14 +625,12 @@ LINEAR_RGB_InitSCCData(
> * intensity2
> */
> if (nitems < 6) {
> - Xfree ((char *)property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
> count = 0;
> break;
> default:
> - Xfree ((char *)property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
>
> /*
> @@ -686,8 +682,7 @@ LINEAR_RGB_InitSCCData(
> /* Red Intensity Table */
> if (!(pScreenData->pRedTbl = (IntensityTbl *)
> Xcalloc (1, sizeof(IntensityTbl)))) {
> - XFree ((char * ) property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
> if (_XcmsGetTableType0(pScreenData->pRedTbl, format_return, &pChar,
> &nitems) == XcmsFailure) {
> @@ -724,8 +719,7 @@ LINEAR_RGB_InitSCCData(
> /* Red Intensity Table */
> if (!(pScreenData->pRedTbl = (IntensityTbl *)
> Xcalloc (1, sizeof(IntensityTbl)))) {
> - XFree ((char * ) property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
> if (_XcmsGetTableType1(pScreenData->pRedTbl, format_return, &pChar,
> &nitems) == XcmsFailure) {
> @@ -762,8 +756,7 @@ LINEAR_RGB_InitSCCData(
> }
> }
> } else {
> - Xfree ((char *)property_return);
> - goto FreeSCCData;
> + goto Free_property_return;
> }
>
> #ifdef ALLDEBUG
> @@ -820,6 +813,9 @@ FreeRedTblElements:
> FreeRedTbl:
> Xfree((char *)pScreenData->pRedTbl);
>
> +Free_property_return:
> + Xfree ((char *)property_return);
> +
> FreeSCCData:
> Xfree((char *)pScreenData);
> pPerScrnInfo->state = XcmsInitNone;
Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>
--
-Alan Coopersmith- alan.coopersmith at oracle.com
Oracle Solaris Platform Engineering: X Window System
More information about the xorg-devel
mailing list