aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2024-01-19 12:59:47 +0100
committerThomas White <taw@physics.org>2024-02-06 16:59:34 +0100
commitfd363c300c1767681ac6b03f05132d9e6d8a6884 (patch)
treebe6ce156bd9ca66a0682393675dd77c1a2ac18c3 /libcrystfel
parenta40db3a0a67914934f214d5ea9473ad3465235b5 (diff)
Fix incorrect uses of cell_free
This also gets rid of crystal_copy_deep. From now on, all crystal_copy calls also copy the UnitCell.
Diffstat (limited to 'libcrystfel')
-rw-r--r--libcrystfel/src/crystal.c28
-rw-r--r--libcrystfel/src/crystal.h1
-rw-r--r--libcrystfel/src/image.c6
-rw-r--r--libcrystfel/src/index.c1
-rw-r--r--libcrystfel/src/indexers/fromfile.c2
5 files changed, 4 insertions, 34 deletions
diff --git a/libcrystfel/src/crystal.c b/libcrystfel/src/crystal.c
index a21283f9..f0022fcc 100644
--- a/libcrystfel/src/crystal.c
+++ b/libcrystfel/src/crystal.c
@@ -91,38 +91,14 @@ Crystal *crystal_new()
/**
* \param cryst: A \ref Crystal to copy.
*
- * Creates a new \ref Crystal which is a copy of \p cryst. The copy is a "shallow
- * copy", which means that copies are NOT made of the data structures which
- * \p cryst contains references to, for example its \ref RefList.
- *
- * \returns A (shallow) copy of \p cryst, or NULL on failure.
- *
- */
-Crystal *crystal_copy(const Crystal *cryst)
-{
- Crystal *c;
-
- c = crystal_new();
- if ( c == NULL ) return NULL;
-
- memcpy(c, cryst, sizeof(Crystal));
- if ( c->notes != NULL ) c->notes = cfstrdup(c->notes);
-
- return c;
-}
-
-
-/**
- * \param cryst: A \ref Crystal to copy.
- *
* Creates a new \ref Crystal which is a copy of \p cryst. The copy is a "deep
* copy", which means that copies ARE made of the data structures which
- * \p cryst contains references to, for example its \ref RefList.
+ * \p cryst contains references to, for example its \ref UnitCell.
*
* \returns A (deep) copy of \p cryst, or NULL on failure.
*
*/
-Crystal *crystal_copy_deep(const Crystal *cryst)
+Crystal *crystal_copy(const Crystal *cryst)
{
Crystal *c;
diff --git a/libcrystfel/src/crystal.h b/libcrystfel/src/crystal.h
index 3f19386c..7147111f 100644
--- a/libcrystfel/src/crystal.h
+++ b/libcrystfel/src/crystal.h
@@ -49,7 +49,6 @@ extern "C" {
extern Crystal *crystal_new(void);
extern Crystal *crystal_copy(const Crystal *cryst);
-extern Crystal *crystal_copy_deep(const Crystal *cryst);
extern void crystal_free(Crystal *cryst);
extern UnitCell *crystal_get_cell(Crystal *cryst);
diff --git a/libcrystfel/src/image.c b/libcrystfel/src/image.c
index 142598e3..3b4e04df 100644
--- a/libcrystfel/src/image.c
+++ b/libcrystfel/src/image.c
@@ -352,9 +352,7 @@ int remove_flagged_crystals(struct image *image)
for ( i=0; i<image->n_crystals; i++ ) {
if ( crystal_get_user_flag(image->crystals[i].cr) ) {
int j;
- Crystal *deleteme = image->crystals[i].cr;
- cell_free(crystal_get_cell(deleteme));
- crystal_free(deleteme);
+ crystal_free(image->crystals[i].cr);
reflist_free(image->crystals[i].refls);
for ( j=i; j<image->n_crystals-1; j++ ) {
image->crystals[j] = image->crystals[j+1];
@@ -375,8 +373,6 @@ void free_all_crystals(struct image *image)
int i;
if ( image->crystals == NULL ) return;
for ( i=0; i<image->n_crystals; i++ ) {
- Crystal *cr = image->crystals[i].cr;
- cell_free(crystal_get_cell(cr));
crystal_free(image->crystals[i].cr);
reflist_free(image->crystals[i].refls);
}
diff --git a/libcrystfel/src/index.c b/libcrystfel/src/index.c
index 7aea3b59..2a2542f5 100644
--- a/libcrystfel/src/index.c
+++ b/libcrystfel/src/index.c
@@ -552,7 +552,6 @@ static int check_cell(IndexingFlags flags, Crystal *cr, UnitCell *target,
if ( out != NULL ) {
/* Replace crystal's cell with new one */
- cell_free(crystal_get_cell(cr));
crystal_set_cell(cr, out);
rtnl_mtx_free(rm);
if ( !right_handed(out) ) STATUS("WARNING: left handed\n");
diff --git a/libcrystfel/src/indexers/fromfile.c b/libcrystfel/src/indexers/fromfile.c
index c7f1d1ba..30305b21 100644
--- a/libcrystfel/src/indexers/fromfile.c
+++ b/libcrystfel/src/indexers/fromfile.c
@@ -337,7 +337,7 @@ int fromfile_index(struct image *image, void *mpriv)
for ( i=0; i<p->n_crystals; i++ ) {
Crystal *cr;
- cr = crystal_copy_deep(p->crystals[i]);
+ cr = crystal_copy(p->crystals[i]);
image_add_crystal(image, cr);
}