[Kst] kdeextragear-2/kst/kst [POSSIBLY UNSAFE]

Barth Netterfield netterfield at astro.utoronto.ca
Tue Jul 13 23:37:45 CEST 2004


OK.  You are doing this.  I'll drop my version.

cbn

On July 13, 2004 03:48 pm, George Staikos wrote:
> CVS commit by staikos:
>
> integrate memory checker to circumvent overcommit on Linux
>
>
>   M +35 -0     kstdatacollection.cpp   1.9 [POSSIBLY UNSAFE: qDebug]
>   M +6 -0      kstdatacollection.h   1.15
>   M +3 -2      kstdatasource.cpp   1.21
>   M +4 -7      ksthistogram.cpp   1.23
>   M +2 -2      kstvector.cpp   1.73
>   M +5 -1      procps.h   1.2
>
>
> --- kdeextragear-2/kst/kst/kstdatacollection.cpp  #1.8:1.9
> @@ -16,7 +16,17 @@
>  
> ***************************************************************************
>/
>
> +#include <config.h>
> +
> +#include <stdlib.h>
> +
>  #include "kstdatacollection.h"
>  #include "kstrvector.h"
>
> +#ifdef HAVE_LINUX
> +#include "sysinfo.h"
> +#include "psversion.h"
> +#define S(X) ((unsigned long long)(X) << 10)
> +#endif
> +
>  /** The list of data sources (files) */
>  KstDataSourceList KST::dataSourceList;
> @@ -50,2 +60,27 @@ void KST::addVectorToList(KstVectorPtr v
>  }
>
> +void *KST::realloc(void *ptr, size_t size) {
> +#ifdef HAVE_LINUX
> +  meminfo();
> +  unsigned long bFree = S(kb_main_free + kb_main_buffers +
> kb_main_cached); +  if (size > bFree) {
> +    qDebug("Tried to allocate too much memory! (Wanted %u, had %lu)",
> size, bFree); +    return 0L;
> +  }
> +#endif
> +  return ::realloc(ptr, size);
> +}
> +
> +void *KST::malloc(size_t size) {
> +#ifdef HAVE_LINUX
> +  meminfo();
> +  unsigned long bFree = S(kb_main_free + kb_main_buffers +
> kb_main_cached); +  if (size > bFree) {
> +    qDebug("Tried to allocate too much memory! (Wanted %u, had %lu)",
> size, bFree); +    return 0L;
> +  }
> +#endif
> +  return ::malloc(size);
> +}
> +
> +// vim: ts=2 sw=2 et
>
> --- kdeextragear-2/kst/kst/kstdatacollection.h  #1.14:1.15
> @@ -56,5 +56,11 @@ namespace KST {
>
>    extern void addVectorToList(KstVectorPtr v);
> +
> +  /** Bad choice for location - maybe move it later */
> +  void *malloc(size_t size);
> +  void *realloc(void *ptr, size_t size);
> +
>  }
>
>  #endif
> +// vim: ts=2 sw=2 et
>
> --- kdeextragear-2/kst/kst/kstdatasource.cpp  #1.20:1.21
> @@ -29,4 +29,5 @@
>  #include <qstylesheet.h>
>
> +#include "kstdatacollection.h"
>  #include "kstdebug.h"
>  #include "stdinsource.h"
> @@ -309,5 +310,5 @@ void KstDataSource::virtual_hook(int id,
>
>  void *KstDataSource::bufferMalloc(size_t size) {
> -  return ::malloc(size);
> +  return KST::malloc(size);
>  }
>
> @@ -319,5 +320,5 @@ void KstDataSource::bufferFree(void *ptr
>
>  void *KstDataSource::bufferRealloc(void *ptr, size_t size) {
> -  return ::realloc(ptr, size);
> +  return KST::realloc(ptr, size);
>  }
>
>
> --- kdeextragear-2/kst/kst/ksthistogram.cpp  #1.22:1.23
> @@ -133,5 +133,5 @@ void KstHistogram::commonConstructor(con
>      NBins = 2;
>    }
> -  Bins = (unsigned long *)malloc(in_n_bins*sizeof(unsigned long *));
> +  Bins = new unsigned long[in_n_bins];
>
>    Color = in_color;
> @@ -141,8 +141,5 @@ void KstHistogram::commonConstructor(con
>
>  KstHistogram::~KstHistogram() {
> -  if (Bins != NULL) {
> -    free(Bins);
> -    Bins = NULL;
> -  }
> +  delete[] Bins;
>  }
>
> @@ -250,10 +247,10 @@ void KstHistogram::setXRange(double xmin
>  void KstHistogram::setNBins(int in_n_bins) {
>
> -  if (Bins!=NULL) free(Bins);
> +  delete[] Bins;
>
>    NBins = in_n_bins;
>
>    if (NBins<2) NBins = 2;
> -  Bins = (unsigned long *)malloc(in_n_bins*sizeof(unsigned long *));
> +  Bins = new unsigned long[in_n_bins];
>    W = (MaxX - MinX)/(double)NBins;
>  }
>
> --- kdeextragear-2/kst/kst/kstvector.cpp  #1.72:1.73
> @@ -107,5 +107,5 @@ KstVector::KstVector(const QString& name
>    }
>
> -  _v = static_cast<double*>(malloc(size*sizeof(double)));
> +  _v = static_cast<double*>(KST::malloc(size*sizeof(double)));
>    _size = size;
>    _is_rising = false;
> @@ -258,5 +258,5 @@ bool KstVector::resize(int sz, bool rein
>    //kdDebug() << "resizing to: " << sz << endl;
>    if (sz > 1) {
> -    _v = static_cast<double*>(realloc(_v, sz*sizeof(double)));
> +    _v = static_cast<double*>(KST::realloc(_v, sz*sizeof(double)));
>      if (!_v) {
>        return false;
>
> --- kdeextragear-2/kst/kst/procps.h  #1.1:1.2
> @@ -39,4 +39,8 @@
>  #define FUNCTION __attribute__((__const__))  /* no access to global mem,
> even via ptr, and no side effect */
>
> +#ifndef __STDC_VERSION__
> +#define __STDC_VERSION__ 0
> +#endif
> +
>  #if !defined(restrict) && __STDC_VERSION__ < 199901
>  #if __GNUC__ > 2 || __GNUC_MINOR__ >= 92
> @@ -65,5 +69,5 @@
>  #endif
>
> -#if SHARED==1 && (__GNUC__ > 2 || __GNUC_MINOR__ >= 96)
> +#if defined(SHARED) && SHARED == 1 && (__GNUC__ > 2 || __GNUC_MINOR__ >=
> 96) #define LABEL_OFFSET
>  #endif
>
>
> _______________________________________________
> Kst mailing list
> Kst at kde.org
> https://mail.kde.org/mailman/listinfo/kst



More information about the Kst mailing list