fix undefined behavior issue on Integrity

in contrast to ::strdup(), qstrdup() allocates memory via new[];
deallocating this memory with free() leads to undefine behavior.

Change-Id: I0692c4bef010c05de547283b00b6c6043ac24c79
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
Konstantin Ritt 2012-04-17 17:07:15 +03:00 committed by Qt by Nokia
parent f4d02ecdbf
commit d48f3fc1e7
2 changed files with 4 additions and 7 deletions

View File

@ -170,6 +170,10 @@
#define QT_VSNPRINTF ::vsnprintf
#endif
// INTEGRITY doesn't enable the declaration in _POSIX_SOURCE mode,
// because strdup() is not part of strict Posix; declare it here
extern "C" char *strdup(const char *src);
#ifndef MAXNAMLEN
# define MAXNAMLEN NAME_MAX
#endif

View File

@ -117,13 +117,6 @@ QT_BEGIN_NAMESPACE
// so we will use 512
static const int errorBufferMax = 512;
#ifdef Q_OS_INTEGRITY
static inline char *strdup(const char *data)
{
return qstrdup(data);
}
#endif
static int qt_qprocess_deadChild_pipe[2];
static struct sigaction qt_sa_old_sigchld_handler;
static void qt_sa_sigchld_handler(int signum)