Author: cy
Date: Thu Apr 23 14:08:40 2020
New Revision: 360223
URL: https://svnweb.freebsd.org/changeset/base/360223

Log:
  Fix PowerPC segfault.
  
  The segfault fix was originally developed by our upstream, sqlite.org,
  to address S/390 and Sparc segfaults, both of which are big endian.
  Our PowerPC is also big endian, which this patch also fixes.
  
  Reported by:  Mark Millard <marklmi at yahoo.com>
  Tested by:    Mark Millard <marklmi at yahoo.com>
  Obtained from:        https://www.sqlite.org/src/vinfo/04885763c4cd00cb?diff=1
                https://sqlite.org/forum/forumpost/672291a5b2
  MFC after:    1 month
  X-MFC with:   r360221, 360221

Modified:
  head/contrib/sqlite3/sqlite3.c

Modified: head/contrib/sqlite3/sqlite3.c
==============================================================================
--- head/contrib/sqlite3/sqlite3.c      Thu Apr 23 13:58:11 2020        
(r360222)
+++ head/contrib/sqlite3/sqlite3.c      Thu Apr 23 14:08:40 2020        
(r360223)
@@ -121302,12 +121302,14 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
             x = *sqlite3VdbeGetOp(v, addrConflictCk);
             if( x.opcode!=OP_IdxRowid ){
               int p2;      /* New P2 value for copied conflict check opcode */
+              const char *zP4;
               if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){
                 p2 = lblRecheckOk;
               }else{
                 p2 = x.p2;
               }
-              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type);
+              zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z;
+              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type);
               sqlite3VdbeChangeP5(v, x.p5);
               VdbeCoverageIf(v, p2!=x.p2);
             }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to