Graham, here is patch attached for the issue.
By default some architectures have "char" being unsigned such as the ones
listed here and others ( https://wiki.debian.org/ArchitectureSpecificsMemo ).
I just forced the sign-ness of pow()'s argument.
Sorry for the delay.

F.

On Mon, 20 Nov 2017 21:10:24 +0200, Graham Inggs <gin...@debian.org> wrote:
> Hi Frederic
> 
> > Just for the record, this bug also happens on arm64.
> > This seems to be a regression. I'm trying to bisect that.
> 
> Did you ever make any progress with this?
> 
> Regards
> Graham
> 
Index: freecad-0.16.6712+dfsg1/src/Base/Unit.cpp
===================================================================
--- freecad-0.16.6712+dfsg1.orig/src/Base/Unit.cpp      2017-07-17 
17:27:47.000000000 +0000
+++ freecad-0.16.6712+dfsg1/src/Base/Unit.cpp   2017-12-07 16:14:39.330651565 
+0000
@@ -113,7 +113,7 @@
    
 }
 
-Unit Unit::pow(char exp)const
+Unit Unit::pow(signed char exp)const
 {
     checkRange("pow()",
                (int32_t)Sig.Length * (int32_t)exp,
Index: freecad-0.16.6712+dfsg1/src/Base/Unit.h
===================================================================
--- freecad-0.16.6712+dfsg1.orig/src/Base/Unit.h        2017-07-17 
17:27:47.000000000 +0000
+++ freecad-0.16.6712+dfsg1/src/Base/Unit.h     2017-12-07 16:15:07.739356583 
+0000
@@ -79,7 +79,7 @@
     bool operator ==(const Unit&) const;
     bool operator !=(const Unit&that) const {return !(*this == that);}
     Unit& operator =(const Unit&);
-    Unit pow(char exp)const;
+    Unit pow(signed char exp)const;
     //@}
     /// get the unit signature
     const UnitSignature & getSignature(void)const {return Sig;} 

Attachment: pgpYtpfPHlDZF.pgp
Description: PGP signature

Reply via email to