summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qtemporarydir.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-16 16:59:33 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-16 16:59:33 +0100
commit3f3be55835427ea9f1bbcc046e05ee538ca214d7 (patch)
tree09d1f54d114855c2b06cc505dfbf74c5890c8419 /src/corelib/io/qtemporarydir.cpp
parentae293c1cb220847194fba6dcebdbb9194837bb56 (diff)
parent9764f8602719676d1fa15e6fd1e7980af16bfc63 (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: src/gui/kernel/qplatformtheme.h tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp Change-Id: Iecd3343d6a050b8764f78d809c4a1532aeba69e5
Diffstat (limited to 'src/corelib/io/qtemporarydir.cpp')
-rw-r--r--src/corelib/io/qtemporarydir.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/corelib/io/qtemporarydir.cpp b/src/corelib/io/qtemporarydir.cpp
index 483a76fa82..2c526847b4 100644
--- a/src/corelib/io/qtemporarydir.cpp
+++ b/src/corelib/io/qtemporarydir.cpp
@@ -94,9 +94,19 @@ static QString defaultTemplateName()
return QDir::tempPath() + QLatin1Char('/') + baseName + QLatin1String("-XXXXXX");
}
+#if defined(Q_OS_QNX ) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID)
+
+static int nextRand(int &v)
+{
+ int r = v % 62;
+ v /= 62;
+ if (v < 62)
+ v = qrand();
+ return r;
+}
+
static char *q_mkdtemp(char *templateName)
{
-#if defined(Q_OS_QNX ) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID)
static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
const size_t length = strlen(templateName);
@@ -110,16 +120,11 @@ static char *q_mkdtemp(char *templateName)
int v = qrand();
/* Fill in the random bits. */
- XXXXXX[0] = letters[v % 62];
- v /= 62;
- XXXXXX[1] = letters[v % 62];
- v /= 62;
- XXXXXX[2] = letters[v % 62];
- v /= 62;
- XXXXXX[3] = letters[v % 62];
- v /= 62;
- XXXXXX[4] = letters[v % 62];
- v /= 62;
+ XXXXXX[0] = letters[nextRand(v)];
+ XXXXXX[1] = letters[nextRand(v)];
+ XXXXXX[2] = letters[nextRand(v)];
+ XXXXXX[3] = letters[nextRand(v)];
+ XXXXXX[4] = letters[nextRand(v)];
XXXXXX[5] = letters[v % 62];
QString templateNameStr = QFile::decodeName(templateName);
@@ -137,11 +142,17 @@ static char *q_mkdtemp(char *templateName)
}
}
return 0;
-#else
- return mkdtemp(templateName);
-#endif
}
+#else // defined(Q_OS_QNX ) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID)
+
+static char *q_mkdtemp(char *templateName)
+{
+ return mkdtemp(templateName);
+}
+
+#endif
+
void QTemporaryDirPrivate::create(const QString &templateName)
{
QByteArray buffer = QFile::encodeName(templateName);