/ Check-in [f03fbf37]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Ensure that the sqlite3StrAccumAppend() routine is never called with a NULL second argument. Doing so is harmless when N==0, but it causes an assert() to fail that was placed to quiet static analyzers.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tkt-55746f9e
Files: files | file ages | folders
SHA1: f03fbf3700d9d4a654e3aa2e5caa810a8416bed9
User & Date: drh 2014-05-07 18:21:56
Context
2014-05-07
18:23
Make sure the group_concat() function returns an empty string, not a NULL, if it has at least one input row. Fix for ticket [55746f9e65f8587]. check-in: d01cedaa user: drh tags: trunk
18:21
Ensure that the sqlite3StrAccumAppend() routine is never called with a NULL second argument. Doing so is harmless when N==0, but it causes an assert() to fail that was placed to quiet static analyzers. Closed-Leaf check-in: f03fbf37 user: drh tags: tkt-55746f9e
17:19
Make sure the group_concat() function returns an empty string, not a NULL, if it has at least one input row. Fix for ticket [55746f9e65f8587]. check-in: 0deac873 user: drh tags: tkt-55746f9e
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/func.c.

1537
1538
1539
1540
1541
1542
1543

1544

1545
1546
1547
1548
1549
1550
1551
        zSep = ",";
        nSep = 1;
      }
      if( nSep ) sqlite3StrAccumAppend(pAccum, zSep, nSep);
    }
    zVal = (char*)sqlite3_value_text(argv[0]);
    nVal = sqlite3_value_bytes(argv[0]);

    if( nVal || firstTerm ) sqlite3StrAccumAppend(pAccum, zVal, nVal);

  }
}
static void groupConcatFinalize(sqlite3_context *context){
  StrAccum *pAccum;
  pAccum = sqlite3_aggregate_context(context, 0);
  if( pAccum ){
    if( pAccum->accError==STRACCUM_TOOBIG ){







>
|
>







1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
        zSep = ",";
        nSep = 1;
      }
      if( nSep ) sqlite3StrAccumAppend(pAccum, zSep, nSep);
    }
    zVal = (char*)sqlite3_value_text(argv[0]);
    nVal = sqlite3_value_bytes(argv[0]);
    if( nVal || (zVal="", firstTerm) ){
      sqlite3StrAccumAppend(pAccum, zVal, nVal);
    }
  }
}
static void groupConcatFinalize(sqlite3_context *context){
  StrAccum *pAccum;
  pAccum = sqlite3_aggregate_context(context, 0);
  if( pAccum ){
    if( pAccum->accError==STRACCUM_TOOBIG ){