[Kst] kdeextragear-2/kst/kst

George Staikos staikos at kde.org
Wed Mar 23 05:14:05 CET 2005


CVS commit by staikos: 

Add PSDs to the memory check algorithm in the data wizard and also add a
check for the malloc() in KstVector::KstVector, temporary until Kst2 when
isValid() becomes KstObject-wide.  We need this check for javascript too, even
though it's an ugly hack and gives somewhat unexpected behaviour in the case
that malloc fails
BUG: 102222


  M +11 -3     datawizard.ui.h   1.128
  M +11 -0     kstpsd.cpp   1.29
  M +7 -1      kstvector.cpp   1.102


--- kdeextragear-2/kst/kst/datawizard.ui.h  #1.127:1.128
@@ -486,9 +486,17 @@ void DataWizard::finished()
 
                 if (_kstDataRange->DoSkip->isChecked()) {
+                    if (_radioButtonPlotPSD->isChecked()) {
+                        memoryRequested += 3 * frames / _kstDataRange->Skip->value()*sizeof(double);
+                    } else {
                     memoryRequested += frames / _kstDataRange->Skip->value()*sizeof(double);
+                    }
+                } else {
+                    if (_radioButtonPlotPSD->isChecked()) {
+                        memoryRequested += 3 * frames * ds->samplesPerFrame(field)*sizeof(double);
                 } else {
                     memoryRequested += frames * ds->samplesPerFrame(field)*sizeof(double);
                 }                
             }
+            }
             ++it;
         }

--- kdeextragear-2/kst/kst/kstpsd.cpp  #1.28:1.29
@@ -30,4 +30,5 @@
 #include "dialoglauncher.h"
 #include "kstdatacollection.h"
+#include "kstdebug.h"
 #include "kstpsd.h"
 #include "kstvectordefaults.h"
@@ -156,4 +157,9 @@ void KstPSD::commonConstructor(const QSt
 
   KstVectorPtr ov = new KstVector(in_tag+"-freq", _PSDLen);
+  if (ov->length() != _PSDLen) {
+    _PSDLen = 1;
+    _Len = 1;
+    KstDebug::self()->log(i18n("Attempted to create a PSD that used all memory."), KstDebug::Error);
+  }
   KST::addVectorToList(ov);
   ov->setProvider(this);
@@ -162,4 +168,9 @@ void KstPSD::commonConstructor(const QSt
 
   ov = new KstVector(in_tag+"-sv", _PSDLen);
+  if (ov->length() != _PSDLen) {
+    _PSDLen = 1;
+    _Len = 1;
+    KstDebug::self()->log(i18n("Attempted to create a PSD that used all memory."), KstDebug::Error);
+  }
   KST::addVectorToList(ov);
   ov->setProvider(this);

--- kdeextragear-2/kst/kst/kstvector.cpp  #1.101:1.102
@@ -72,5 +72,10 @@ KstVector::KstVector(const QString& name
 
   _v = static_cast<double*>(KST::malloc(size*sizeof(double)));
+  if (!_v) { // Malloc failed
+    _v = static_cast<double*>(KST::malloc(sizeof(double)));
+    _size = 1;
+  } else {
   _size = size;
+  }
   _is_rising = false;
 




More information about the Kst mailing list