From c9ae652487514acd19f3631224ced7ac14f756c8 Mon Sep 17 00:00:00 2001
From: Dmitry Shachnev <mitya57@gmail.com>
Date: Tue, 22 Jan 2013 17:41:46 +0400
Subject: [PATCH] QPdfEnginePrivate: Fix invalid format for rectangles on some
 locales

This is done by using locale-independent QByteArray::setNum() instead
of qvsnprintf() for printing doubles.

Task-number: QTBUG-24949
Change-Id: I68cb192417d9a94f72e039c40f647b4a6826a3b7
Reviewed-by: John Layt <jlayt@kde.org>
---
 src/gui/painting/qpdf.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index 07a3caa51bc..eed64180e54 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -2461,15 +2461,19 @@ void QPdfEnginePrivate::drawTextItem(const QPointF &p, const QTextItemInt &ti)
         trans.map(ti.width.toReal()/size, (ti.ascent.toReal()-ti.descent.toReal())/size, &x2, &y2);
 
         uint annot = addXrefEntry(-1);
+        QByteArray x1s, y1s, x2s, y2s;
+        x1s.setNum(static_cast<double>(x1), 'f');
+        y1s.setNum(static_cast<double>(y1), 'f');
+        x2s.setNum(static_cast<double>(x2), 'f');
+        y2s.setNum(static_cast<double>(y2), 'f');
+        QByteArray rectData = x1s + ' ' + y1s + ' ' + x2s + ' ' + y2s;
+        xprintf("<<\n/Type /Annot\n/Subtype /Link\n/Rect [");
+        xprintf(rectData.constData());
 #ifdef Q_DEBUG_PDF_LINKS
-        xprintf("<<\n/Type /Annot\n/Subtype /Link\n/Rect [%f %f %f %f]\n/Border [16 16 1]\n/A <<\n",
+        xprintf("]\n/Border [16 16 1]\n/A <<\n");
 #else
-        xprintf("<<\n/Type /Annot\n/Subtype /Link\n/Rect [%f %f %f %f]\n/Border [0 0 0]\n/A <<\n",
+        xprintf("]\n/Border [0 0 0]\n/A <<\n");
 #endif
-                static_cast<double>(x1),
-                static_cast<double>(y1),
-                static_cast<double>(x2),
-                static_cast<double>(y2));
         xprintf("/Type /Action\n/S /URI\n/URI (%s)\n",
                 ti.charFormat.anchorHref().toLatin1().constData());
         xprintf(">>\n>>\n");
-- 
GitLab