summaryrefslogtreecommitdiff
path: root/silx/io/specfile/src
diff options
context:
space:
mode:
Diffstat (limited to 'silx/io/specfile/src')
-rw-r--r--silx/io/specfile/src/sfinit.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/silx/io/specfile/src/sfinit.c b/silx/io/specfile/src/sfinit.c
index 7291427..ca2fa7f 100644
--- a/silx/io/specfile/src/sfinit.c
+++ b/silx/io/specfile/src/sfinit.c
@@ -1,5 +1,5 @@
# /*##########################################################################
-# Copyright (C) 1995-2017 European Synchrotron Radiation Facility
+# Copyright (C) 1995-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -521,11 +521,12 @@ sfReadFile(SpecFile *sf,SfCursor *cursor,int *error) {
free(buffer);
sf->no_scans = cursor->scanno;
- /*
- * Save last
- */
- sfSaveScan(sf,cursor,error);
-
+ if (sf->no_scans > 0) {
+ /*
+ * Save last
+ */
+ sfSaveScan(sf,cursor,error);
+ }
return;
}
@@ -790,24 +791,21 @@ sfSaveScan(SpecFile *sf, SfCursor *cursor,int *error) {
static void
sfAssignScanNumbers(SpecFile *sf) {
- int size,i;
- char *buffer,*ptr;
-
- char buffer2[50];
+ int i;
+ char *ptr;
+ char buffer[50];
+ char buffer2[50];
register ObjectList *object,
*object2;
SpecScan *scan,
*scan2;
- size = 50;
- buffer = (char *) malloc(size);
-
for ( object = (sf->list).first; object; object=object->next) {
scan = (SpecScan *) object->contents;
lseek(sf->fd,scan->offset,SEEK_SET);
- read(sf->fd,buffer,size);
+ read(sf->fd,buffer,sizeof(buffer));
buffer[49] = '\0';
for ( ptr = buffer+3,i=0; *ptr != ' ';ptr++,i++) buffer2[i] = *ptr;