Ignore:
Timestamp:
Jul 2, 2011, 4:01:14 PM (14 years ago)
Author:
Herwig Bauernfeind
Message:

Samba 3.5: Update vendor to version 3.5.9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/lib/charcnv.c

    r414 r597  
    574574                return false;
    575575        }
     576
    576577        if (srclen == 0) {
    577                 ob = talloc_strdup(ctx, "");
     578                /* We really should treat this as an error, but
     579                   there are too many callers that need this to
     580                   return a NULL terminated string in the correct
     581                   character set. */
     582                if (to == CH_UTF16LE|| to == CH_UTF16BE || to == CH_UTF16MUNGED) {
     583                        destlen = 2;
     584                } else {
     585                        destlen = 1;
     586                }
     587                ob = talloc_zero_array(ctx, char, destlen);
    578588                if (ob == NULL) {
    579589                        errno = ENOMEM;
    580590                        return false;
    581591                }
     592                *converted_size = destlen;
    582593                *dest = ob;
    583                 *converted_size = 0;
    584594                return true;
    585595        }
     
    678688        ob[destlen+1] = '\0';
    679689
     690        /* Ensure we can never return a *converted_size of zero. */
     691        if (destlen == 0) {
     692                /* This can happen from a bad iconv "use_as_is:" call. */
     693                if (to == CH_UTF16LE|| to == CH_UTF16BE || to == CH_UTF16MUNGED) {
     694                        destlen = 2;
     695                } else {
     696                        destlen = 1;
     697                }
     698        }
     699
    680700        *converted_size = destlen;
    681701        return true;
     
    13431363{
    13441364        size_t ret;
     1365        size_t ucs2_align_len = 0;
    13451366
    13461367        if (dest_len == (size_t)-1) {
     
    13601381                if (src_len != (size_t)-1)
    13611382                        src_len--;
     1383                ucs2_align_len = 1;
    13621384        }
    13631385
     
    13951417        }
    13961418
    1397         return src_len;
     1419        return src_len + ucs2_align_len;
    13981420}
    13991421
     
    14211443        char *dest;
    14221444        size_t dest_len;
     1445        size_t ucs2_align_len = 0;
    14231446
    14241447        *ppdest = NULL;
     
    14391462                if (src_len != (size_t)-1)
    14401463                        src_len--;
     1464                ucs2_align_len = 1;
    14411465        }
    14421466
     
    15041528
    15051529        *ppdest = dest;
    1506         return src_len;
     1530        return src_len + ucs2_align_len;
    15071531}
    15081532
Note: See TracChangeset for help on using the changeset viewer.