Coverity: fileio module memory errors fixed.
[scilab.git] / scilab / modules / fileio / sci_gateway / c / sci_pwd.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Allan CORNET
4  * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  */
16 #include <string.h>
17 #include "gw_fileio.h"
18 #include "scicurdir.h"
19 #include "sci_malloc.h"
20 #include "Scierror.h"
21 #include "localization.h"
22 #include "api_scilab.h"
23
24 /*--------------------------------------------------------------------------*/
25 int sci_pwd(char *fname, void* pvApiCtx)
26 {
27     SciErr sciErr;
28     int ierr = 0;
29     char *path = NULL;
30
31     CheckRhs(0, 0);
32     CheckLhs(0, 1);
33
34     path = scigetcwd(&ierr);
35
36     if (ierr)
37     {
38         if (path)
39         {
40             FREE(path);
41             path = NULL;
42         }
43         Scierror(998, _("%s: An error occurred.\n"), fname);
44         return 0;
45     }
46     else
47     {
48         int n1 = 1;
49         int m1 = (int)strlen(path);
50
51         n1 = 1;
52         sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, 1, 1, (char const * const*) &path);
53         if (sciErr.iErr)
54         {
55             printError(&sciErr, 0);
56             FREE(path);
57             path = NULL;
58             return 0;
59         }
60
61         LhsVar(1) = Rhs + 1;
62         FREE(path);
63         path = NULL;
64         PutLhsVar();
65     }
66
67     return 0;
68 }
69 /*--------------------------------------------------------------------------*/