The following commit has been merged in the master branch:
commit 5b388dfd389e8c78433114219fb67d169d20a11b
Author: Andrei Zavada <[email protected]>
Date:   Mon Jun 10 02:46:26 2013 +0300

    more detailed diagnostics in CEDFFile::get_region_original_smpl() exceptions

diff --git a/src/libsigfile/edf-io.cc b/src/libsigfile/edf-io.cc
index 2f306e1..b64b96e 100644
--- a/src/libsigfile/edf-io.cc
+++ b/src/libsigfile/edf-io.cc
@@ -9,6 +9,7 @@
  *         License:  GPL
  */
 
+#include "common/string.hh"
 #include "edf.hh"
 
 using namespace std;
@@ -20,15 +21,19 @@ get_region_original_smpl( const int h,
                          const size_t sa, const size_t sz) const
 {
        if ( unlikely (_status & (TStatus::bad_header | TStatus::bad_version)) )
-               throw invalid_argument("CEDFFile::get_region_original(): broken 
source");
+               throw invalid_argument ("CEDFFile::get_region_original(): 
broken source");
        if ( unlikely (_mmapping == NULL) )
-               throw invalid_argument("CEDFFile::get_region_original(): no 
data");
+               throw invalid_argument ("CEDFFile::get_region_original(): no 
data");
        if ( unlikely (sa >= sz || sz > samplerate(h) * recording_time()) )
-               throw range_error("CEDFFile::get_region_original(): bad 
region");
+               throw range_error (agh::str::sasprintf(
+                                          
"CEDFFile::get_region_original(%s[%s]): bad region (req %zu:%zu, avail end %zu 
x %g sec = %g, or %zu x %zu = %zu)",
+                                          filename(), operator[](h).ucd.name(),
+                                          sa, sz, samplerate(h), 
recording_time(), samplerate(h) * recording_time(),
+                                          n_data_records, 
(*this)[h].samples_per_record, n_data_records * (*this)[h].samples_per_record));
 
        valarray<TFloat> recp;
 
-       const SSignal& H = (*this)[h];
+       const SSignal& H = operator[](h);
        size_t  r0    =                        (   sa) / H.samples_per_record,
                r_cnt = (size_t) ceilf( (float)(sz-sa) / H.samples_per_record);
 

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to