forked from mirrors/nixpkgs
Updating hugin
svn path=/nixpkgs/trunk/; revision=22810
This commit is contained in:
parent
79dec6e9a7
commit
5cf5a154db
|
@ -3,15 +3,13 @@
|
|||
glew, libXmu, libXi }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "hugin-2009.4.0";
|
||||
name = "hugin-2010.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/hugin/${name}.tar.gz";
|
||||
sha256 = "1xa7rnpwlv68wfkikmlrs74hqylpkh837p3narqljr2a7fxf04r9";
|
||||
sha256 = "08xm7ggfrh536lqvdzw7zg09p2awbclw5r7i8c59gf092w1cac7d";
|
||||
};
|
||||
|
||||
# patches = [ ./levmar-64-bit-alignment.patch ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
|
||||
|
||||
NIX_LDFLAGS = "-lrt";
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
This patch fixes alignment issues on 64-bit machines. It was taken
|
||||
from http://www.mail-archive.com/hugin-ptx@googlegroups.com/msg02976.html .
|
||||
See also http://thread.gmane.org/gmane.linux.distributions.nixos/2352 .
|
||||
|
||||
--- hugin/src/foreign/levmar/misc_core.c 2009-04-28 13:30:33.000000000 +0200 # SVN 3799
|
||||
+++ hugin/src/foreign/levmar/misc_core.c 2009-05-04 07:49:00.000000000 +0200 # Merged patch.pt and fix_alias.diff
|
||||
@@ -332,7 +332,7 @@
|
||||
a_sz=m*m;
|
||||
u_sz=m*m; s_sz=m; vt_sz=m*m;
|
||||
|
||||
- tot_sz=iworksz*sizeof(int) + (a_sz + u_sz + s_sz + vt_sz + worksz)*sizeof(LM_REAL);
|
||||
+ tot_sz=(a_sz + u_sz + s_sz + vt_sz + worksz)*sizeof(LM_REAL) + iworksz*sizeof(int); /* should be arranged in that order for proper doubles alignment */
|
||||
|
||||
buf_sz=tot_sz;
|
||||
buf=(LM_REAL *)malloc(buf_sz);
|
||||
@@ -414,25 +414,27 @@
|
||||
int buf_sz=0;
|
||||
|
||||
register int i, j, k, l;
|
||||
-int *idx, maxi=-1, idx_sz, a_sz, x_sz, work_sz, tot_sz;
|
||||
+int *idxbuf, *idx, maxi=-1, idx_sz, a_sz, x_sz, work_sz, tot_sz;
|
||||
LM_REAL *a, *x, *work, max, sum, tmp;
|
||||
|
||||
/* calculate required memory size */
|
||||
idx_sz=m;
|
||||
+ idxbuf=(void *)malloc(idx_sz*sizeof(int));
|
||||
+
|
||||
a_sz=m*m;
|
||||
x_sz=m;
|
||||
work_sz=m;
|
||||
- tot_sz=idx_sz*sizeof(int) + (a_sz+x_sz+work_sz)*sizeof(LM_REAL);
|
||||
+ tot_sz=(a_sz + x_sz + work_sz)*sizeof(LM_REAL) + idx_sz*sizeof(int); /* should be arranged in that order for proper doubles alignment */
|
||||
|
||||
buf_sz=tot_sz;
|
||||
buf=(void *)malloc(tot_sz);
|
||||
- if(!buf){
|
||||
+ if(!buf || !idxbuf){
|
||||
fprintf(stderr, RCAT("memory allocation in ", LEVMAR_LUINVERSE) "() failed!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
- idx=(int *)buf;
|
||||
- a=(LM_REAL *)(idx + idx_sz);
|
||||
+ idx=(int *)idxbuf;
|
||||
+ a=(LM_REAL *)buf;
|
||||
x=a + a_sz;
|
||||
work=x + x_sz;
|
||||
|
||||
@@ -448,6 +450,7 @@
|
||||
if(max==0.0){
|
||||
fprintf(stderr, RCAT("Singular matrix A in ", LEVMAR_LUINVERSE) "()!\n");
|
||||
free(buf);
|
||||
+ free(idxbuf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -522,6 +525,7 @@
|
||||
}
|
||||
|
||||
free(buf);
|
||||
+ free(idxbuf);
|
||||
|
||||
return 1;
|
||||
}
|
Loading…
Reference in a new issue