[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kexi/plugins/reportspgz
From:       Adam Pigg <adam () piggz ! co ! uk>
Date:       2009-08-26 19:17:07
Message-ID: 1251314227.697759.12906.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1016006 by piggz:

Fix potential crash if report schema is invalid and fails to parse, resulting in no document.

 M  +19 -14    kexireportpage.cpp  
 M  +8 -4      kexireportview.cpp  


--- trunk/koffice/kexi/plugins/reportspgz/kexireportpage.cpp #1016005:1016006
@@ -38,21 +38,24 @@
     kDebug() << "CREATED PAGE";
     m_reportDocument = r;
     m_page = 1;
-
-    QString pageSize = r->pageOptions().getPageSize();
     int pageWidth = 0;
     int pageHeight = 0;
-    if (pageSize == "Custom") {
-        // if this is custom sized sheet of paper we will just use those values
-        pageWidth = (int)(r->pageOptions().getCustomWidth());
-        pageHeight = (int)(r->pageOptions().getCustomHeight());
-    } else {
-        // lookup the correct size information for the specified size paper
-        pageWidth = r->pageOptions().widthPx();
-        pageHeight = r->pageOptions().heightPx();
+    
+    if (m_reportDocument) {
+        QString pageSize = r->pageOptions().getPageSize();
+
+
+        if (pageSize == "Custom") {
+            // if this is custom sized sheet of paper we will just use those values
+            pageWidth = (int)(r->pageOptions().getCustomWidth());
+            pageHeight = (int)(r->pageOptions().getCustomHeight());
+        } else {
+            // lookup the correct size information for the specified size paper
+            pageWidth = r->pageOptions().widthPx();
+            pageHeight = r->pageOptions().heightPx();
+        }
     }
 
-
     setFixedSize(pageWidth, pageHeight);
 
     kDebug() << "PAGE IS " << pageWidth << "x" << pageHeight;
@@ -74,9 +77,11 @@
     m_page = p;
     m_pixmap->fill();
     QPainter qp(m_pixmap);
-    KRScreenRender sr;
-    sr.setPainter(&qp);
-    sr.render(m_reportDocument, p - 1);
+    if (m_reportDocument) {
+        KRScreenRender sr;
+        sr.setPainter(&qp);
+        sr.render(m_reportDocument, p - 1);
+    }
     m_repaint = true;
     repaint();
 }
--- trunk/koffice/kexi/plugins/reportspgz/kexireportview.cpp #1016005:1016006
@@ -228,7 +228,9 @@
         QDomElement conn = root.firstChildElement( "connection" );
         
         m_preRenderer = new ORPreRender(tempData()->document);
-        m_preRenderer->setSourceData(sourceData(conn));
+        if (!conn.isNull())  {
+            m_preRenderer->setSourceData(sourceData(conn));
+        }
         m_preRenderer->setName( tempData()->name );
         m_currentPage = 1;
 
@@ -237,9 +239,11 @@
         m_preRenderer->registerScriptObject(m_kexi, "Kexi" );
         
         m_reportDocument = m_preRenderer->generate();
-        m_pageCount = m_reportDocument->pages();
-        m_pageSelector->setRecordCount(m_pageCount);
-
+        if (m_reportDocument) {
+            m_pageCount = m_reportDocument->pages();
+            m_pageSelector->setRecordCount(m_pageCount);
+        }
+        
         m_reportWidget = new KexiReportPage(this, m_reportDocument);
         m_reportWidget->setObjectName("KexiReportPage");
         m_scrollArea->setWidget(m_reportWidget);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic