From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Sergey N. Yatskevich" To: ALT Devel discussion list In-Reply-To: References: Content-Type: text/plain; charset=koi8-r Date: Mon, 29 May 2006 18:05:20 +0400 Message-Id: <1148911520.9279.8.camel@snc.2100.gosniias.ru> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 (2.6.0-alt2.1) Content-Transfer-Encoding: 8bit Subject: Re: [devel] gcc4&multisync0.90 X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.7 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 May 2006 14:05:07 -0000 Archived-At: List-Archive: List-Post: В Пнд, 29/05/2006 в 16:26 +0400, Alexey Shabalin пишет: > День добрый > помогите собрать multisync0.90 > gcc3.4 собирает, а gcc4 ругается на следующий участок. > > =============================== > static void msync_fs_make_config(fs_options *options, char **data, int *size) > { > xmlDocPtr doc; > > doc = xmlNewDoc((xmlChar*)"1.0"); > doc->children = xmlNewDocNode(doc, NULL, (xmlChar*)"config", NULL); > > xmlNewChild(doc->children, NULL, (xmlChar*)"path", > (xmlChar*)options->path); > xmlNewChild(doc->children, NULL, (xmlChar*)"recursive", > (xmlChar*)(options->recursive ? "TRUE" : "FALS > > xmlDocDumpMemory(doc, (xmlChar **)data, size); > *size++; > } > =================================== > skip > =================================== > msync_fs_make_config(options, &config, &size); > > > file_sync.c: In function 'msync_fs_make_config': > file_sync.c:129: warning: value computed is not used > > file_sync.c:129 - это *size++; > > Если убрать * - ругань исчезает. коректно ли это? Нет, не корректно. Всё дело в приоритете операций разыменования указателя (*) и увеличения на единицу (++). Если развернуть данную конструкцию (*size++), то получится следующее: int* tmp = size; size = size + 1; *tmp; // вот здесь и ругается Судя по коду здесь просто к вычисленному xmlDocDumpMemory размеру добавляется единица (наверное для того, чтобы учесть завершающий '\0'), так что правильно должно быть так: (*size)++ -- Sergey N. Yatskevich