summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
84dbb69)
recode_substring_pool() generally returned a string allocated by
pool_malloc(), but when there was an error finding the converter it
returned a string that was allocated by pool_alloc(). This was a problem
for parse_value_labels() in the system file reader, because that function
frees all the strings it recodes. This commit fixes the problem by
always using pool_malloc() in recode_substring_pool().
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 2006, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
dynamically allocated string in TO-encoding. Any characters which cannot be
converted will be represented by '?'.
dynamically allocated string in TO-encoding. Any characters which cannot be
converted will be represented by '?'.
- The returned string will be null-terminated and allocated on POOL.
+ The returned string will be null-terminated and allocated on POOL with
+ pool_malloc().
This function's behaviour differs from that of g_convert_with_fallback
provided by GLib. The GLib function will fail (returns NULL) if any part of
This function's behaviour differs from that of g_convert_with_fallback
provided by GLib. The GLib function will fail (returns NULL) if any part of
if ( (iconv_t) -1 == conv )
{
struct substring out;
if ( (iconv_t) -1 == conv )
{
struct substring out;
- ss_alloc_substring_pool (&out, text, pool);
+
+ out.string = pool_malloc (pool, text.length + 1);
+ out.length = text.length;
+ memcpy (out.string, text.string, text.length);
+ out.string[out.length] = '\0';