From c7b253b0378e98b2f83f9633410a30bca19ea9a4 Mon Sep 17 00:00:00 2001 From: Hinko Kocevar Date: Wed, 13 Jul 2016 10:43:10 +0200 Subject: [PATCH] Do not segfault if camera initialization fails in constructor. Move allocation of enum string before calling Andor SDK init. mInitOK is used to avoid divide by zero in setupAcquisition(). --- andorApp/src/andorCCD.cpp | 31 ++++++++++++++++++------------- andorApp/src/andorCCD.h | 2 ++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/andorApp/src/andorCCD.cpp b/andorApp/src/andorCCD.cpp index 7b0cedc..e876efb 100755 --- a/andorApp/src/andorCCD.cpp +++ b/andorApp/src/andorCCD.cpp @@ -110,7 +110,7 @@ AndorCCD::AndorCCD(const char *portName, const char *installPath, int shamrockID : ADDriver(portName, 1, NUM_ANDOR_DET_PARAMS, maxBuffers, maxMemory, asynEnumMask, asynEnumMask, ASYN_CANBLOCK, 1, priority, stackSize), - mExiting(false), mShamrockId(shamrockID), mSPEDoc(0) + mExiting(false), mShamrockId(shamrockID), mSPEDoc(0), mInitOK(false) { int status = asynSuccess; @@ -153,6 +153,18 @@ AndorCCD::AndorCCD(const char *portName, const char *installPath, int shamrockID return; } + // Initialize ADC enums + for (i=0; i